代码示例
要跟踪一个远程分支:
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
结论:你可以使用两种方式来获取你的队友的分支,一种是通过git-clone,另一种则不需要。这两种方式都需要使用
git remote add
。后者的优点似乎在于你需要运行少一个命令。前者则可以将你的队友整个仓库复制到你的硬盘上。
请参阅Git手册以了解如何更新远程分支。注意,远程分支可以在你的计算机上,不一定要在远程计算机上。你的分支也可以是远程分支,但这会限制你的工作流程。
接下来,你可能想将你朋友的特定文件合并到你的分支中。在这种情况下,只需知道你朋友提交的前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
在这种情况下,你的文件与你朋友的文件有很大不同,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提醒我有关冲突的问题。Google再次在官方Git网站上拯救了这一天:
如果存在冲突-例如,
如果同一文件在远程分支和本地分支中以两种不同的方式进行修改-那么你会
得到警告-
下一个问题是清理问题部分并重新合并。
您会在您的问题文件中看到类似以下内容-玩得开心!(我终于遇到了真正的问题;)
alt text http://dl.getdropbox.com/u/175564/exampleGitProblemSolving.png
在Mac的FileMerge中比较和合并dotFiles的问题
我需要更新我的Git,因为只有最新的Git才有difftool命令。您可以在线程中找到解决方案。
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
所有3个Masi、master和origin的2个排列组合都没有起作用。
练习2: 如果你的远程列表中有一个队友,你该如何提交到你的github账户?
Origin是你实际的外部git-repo的简称,例如在Github上。你的变量origin的内容可能已被另一个远程repo替换。在这种情况下,我建议你创建一个新变量:
git remote add github git@github.com:myLogin/myProject.git
请注意,您可以在 github 的位置使用 origin2。Origin 只是命名存储库的约定。
然后,您只需运行:
git push github master
如果你的ssh-key中有密码,可能会出现权限被拒绝的警告。如果确实出现了这种情况,请参考这篇文章。
sudo gem install git_remote_branch --include-dependencies
可以做到这一点,前提是你的$PATH
引用了 Rubybin
目录中的脚本。 - VonC