代码示例
跟踪远程分支
git remote add -t master Hnr git://github.com/userName/files.git
这不会下载您的分支。它只是编辑文件 .git/config 并添加几行告诉 Git 如何以及如何远程获取数据。
要获取您的队友的分支,请运行
git fetch Hnr
要查看您确实拥有您的队友的分支,请运行
git branch -a
或仅查看您朋友的分支机构
git branch -r
上面两个命令最初引起了我的困惑,因为我不知道它们。这让我尝试了其他不必要的命令来为我创建分支。
第二种方式来拥有你朋友的分支
但是请注意,您可以使用 git-clone 将您朋友的代码保存到单独的目录中,如下所示
git clone UrlAtGithub
然后,您显然可以使用上面的 Git-remote 在您的 Git 存储库中创建一个分支:
git remote add master Hnr PATH/ToYourFriendRepo.git
结论:您可以使用两种方式为您创建 teamMate 的分支,通过 git-clone 或不使用它。两种方式都需要使用git remote add
. 后者的优势似乎是您需要少运行一个命令。前者然后再次将您的队友的整个回购提供给您的硬盘。
请参阅 Git 手册,了解如何更新远程分支。(NB 远程分支可以在您的计算机上。它不必在远程计算机上。您的分支也可以是远程分支,但这会限制您的工作流程。)
接下来,您可能希望将您朋友的特定文件合并到您的分支。在这种情况下,只需知道您朋友提交的 5 个首字母即可合并文件。
[我不确定您如何执行以下操作:]例如,您需要运行
git merge 76a32
您可能会得到以下输出
CONFLICT (add/add): Merge conflict in shells/externalPrograms
Auto-merging shells/smallApps/extract
CONFLICT (add/add): Merge conflict in shells/smallApps/extract
Auto-merging shells/smallApps/extract~
CONFLICT (add/add): Merge conflict in shells/smallApps/extract~
Automatic merge failed; fix conflicts and then commit the result.
在这种情况下,您的文件与您朋友的文件有很大不同,Git 无法决定采用哪个文件。您显然需要运行以下内容
git rebase
你得到
shells/smallApps/extract: needs merge
shells/smallApps/extract~: needs merge
cannot rebase: you have unstaged changes
练习 1:但是,我现在陷入困境,因为我的 tig 没有在我的 Git 树上显示我朋友的提交。
您如何将朋友的提交 76a32 提交到您的 Git 树中的哪个分支在您的 Git 中?
您现在可能已经解决了问题。问题在于我忽略了解决 Git 给我通知的冲突。谷歌在官方 Git 网站上再次拯救了这一天:
如果有冲突——例如,如果同一个文件在远程分支和本地分支中以两种不同的方式被修改——那么你会被警告——
接下来的问题是清理有问题的部分并再次合并。您会在有问题的文件中看到类似于以下内容的内容——玩得开心!(我终于遇到了真正的问题;)
替代文字 http://dl.getdropbox.com/u/175564/exampleGitProblemSolving.png
在 Mac 的 FileMerge 中区分和合并点文件的问题
我需要更新我的 Git,因为只有最新的 Git 有 difftool -command。您可以在线程中找到解决方案。
Difftool 允许您从终端启动 FileMerge 中的 dotFiles。您无法在 GUI 中访问它们。它像
git difftool master:README dev:README
添加新的远程帐户后,您在 Github 中的帐户出现问题
您的 Github 帐户可能已在 .git/config 中消失。在这种情况下,您需要运行以下代码
git remote add -f YourUserName UrlIn@form.git
然后你可能会注意到你不能正常 git-push
git push origin master
您可能会收到以下错误消息
fatal: 'origin' does not appear to be a git repository
fatal: The remote end hung up unexpectedly
您也可以尝试以下命令来解决问题
git push Masi master
以及 Masi、master 和 origin 的所有 3 个低于 2 的排列。但是,没有一个命令不起作用。
练习 2:当您的远程列表中有一个队友时,您如何提交到您的 github 帐户?
Origin 是您实际外部 git-repo 的简称,例如在 Github。您的变量来源的内容可能已被另一个远程仓库替换。在这种情况下,我建议您通过
git remote add github git@github.com:myLogin/myProject.git
请注意,您可以使用 origin2 代替 github。Origin 只是命名 repo 的约定。
然后你可以简单地运行
git push github master
您的 ssh 密钥中可能有密码。如果你有,你可能会得到一个权限被拒绝的警告。如果你这样做了,请查看线程。