Answers:
git remote add coworker git://path/to/coworkers/repo.git
git fetch coworker
git checkout --track coworker/foo
这将建立一个本地分支foo
,跟踪远程分支coworker/foo
。因此,当您的同事进行了一些更改时,您可以轻松地将它们拉出:
git checkout foo
git pull
对评论的回应:
酷:)而且,如果我想对该分支进行自己的更改,是否应该从“ foo”创建第二个本地分支“ bar”并在那里工作而不是直接在我的“ foo”上工作?
即使我建议您也不需要创建新分支。您不妨直接致力于foo
并让您的同事拉您的分支。但是该分支已经存在,您的分支foo
需要设置为该分支的上游分支:
git branch --set-upstream foo colin/foo
假设colin
是以类似方式定义您的存储库(您的同事存储库的远程目录):
git remote add colin git://path/to/colins/repo.git
不,您不需要将它们添加为遥控器。 那样会很麻烦,而且每次都很难。
git fetch git@github.com:theirusername/reponame.git theirbranch:ournameforbranch
这将创建一个名为的本地分支ournameforbranch
,该分支与为其使用的分支完全相同theirbranch
。对于问题示例,最后一个参数为foo:foo
。
:ournameforbranch
如果想出一个与您自己的分支机构不冲突的名称,则可以省去部分注释。在这种情况下,可以使用称为的引用FETCH_HEAD
。您可以git log FETCH_HEAD
查看他们的提交,然后做一些事情cherry-picked
来挑选他们的提交。
通常,您想修复其中的一些并将其推回原位。也有可能:
git fetch git@github.com:theirusername/reponame.git theirbranch
git checkout FETCH_HEAD
# fix fix fix
git push git@github.com:theirusername/reponame.git HEAD:theirbranch
如果在分离状态下工作让您感到烦恼,请务必使用创建一个分支:ournameforbranch
,FETCH_HEAD
并使用替换和HEAD
以上ournameforbranch
。
master
分支),则另一个答案将不起作用
git branch -m newbranch
在此分离状态下运行,git将失去理智,并开始说您的存储库不再有效。git init
似乎已解决此问题,并通过名为“ newbranch”的分支使您或多或少地恢复了以前的状态。
如果是antak的答案:
git fetch git@github.com:<THEIR USERNAME>/<REPO>.git <THEIR BRANCH>:<OUR NAME FOR BRANCH>
给你:
Permission denied (publickey).
fatal: Could not read from remote repository.
Please make sure you have the correct access rights
and the repository exists.
然后(按照Przemek D的建议)使用
git fetch https://github.com/<THEIR USERNAME>/<REPO>.git <THEIR BRANCH>:<OUR NAME FOR BRANCH>
以下是一个不错的权宜解决方案,可与GitHub一起使用,以从另一个用户的分支中检出PR分支。您需要知道拉取请求ID(GitHub与PR标题一起显示)。
例:
修复你的不安全的代码#8
爱丽丝想合并1到承诺your_repo:master
从her_repo:branch
git checkout -b <branch>
git pull origin pull/8/head
如果不同于,请替换您的遥控器origin
。用正确的拉取请求ID
代替8
。
如果分叉的存储库受到保护,因此您不能直接将其推送到存储库中,而您的目标是更改其foo,则需要将其分支foo放入您的存储库中,如下所示:
git remote add protected_repo https://github.com/theirusername/their_repo.git
git fetch protected_repo
git checkout --no-track protected_repo/foo
现在您有了foo的本地副本,而没有上游关联。您可以提交更改(或不提交更改),然后将foo推送到自己的远程存储库中。
git push --set-upstream origin foo
现在foo在GitHub的仓库中,本地foo正在对其进行跟踪。如果他们继续对foo进行更改,则可以获取他们的内容并合并到foo中。
git checkout foo
git fetch protected_repo
git merge protected_repo/foo
git://
其他人的GitHub存储库页面中的URL代替//path/to/coworkers/repo.git
。(这就是让我的回答太慢的原因;)