我有托管在GitHub上一个项目,该项目已经有人分叉。在他们的岔路口,他们已经创造了一个新的分支“foo”和做了一些改动。我怎么拉自己的“富”到一个新的分支也被命名为“foo”在我的回购?
我知道他们可以提交一个pull请求给我,但我想启动这个过程中我自己。
假设如下:
git remote add coworker git://path/to/coworkers/repo.git
git fetch coworker
git checkout --track coworker/foo
这将建立一个本地分支qazxsw POI,跟踪远程分支qazxsw POI。不要当你的同事已经做了一些改动,就可以轻松地将它们:
foo
回应评论:
酷:)如果我想使自己的更改分支,我要创建“富”第二个地方分支“酒吧”和我的“福”在那里工作,而不是直接?
你并不需要创建一个新的分支,即使我推荐它。你还不如直接承诺coworker/foo
和你的同事拉你的分支。但该分支已经存在,你的分支git checkout foo
git pull
需要设置为上游分支吧:
foo
假设foo
是你的资料库(远程到你的同事库)在类似的方式定义:
git branch --set-upstream foo colin/foo
不,你并不需要将其添加为远程。这将是clumbersome和痛苦,每次做。
colin
这将创建一个本地分支命名git remote add colin git://path/to/colins/repo.git
这是完全一样的东西git fetch [email protected]:theirusername/reponame.git theirbranch:ournameforbranch
是他们。对于问题例如,最后一个参数是ournameforbranch
。
注theirbranch
组成部分又可以离开,如果想起来,不与自己的分支之一冲突的名字是麻烦。在这种情况下,参考称为foo:foo
可用。您可以:ournameforbranch
看到自己提交,然后做这样的事情FETCH_HEAD
樱桃挑选自己的提交。
通常情况下,你要修复他们的东西,并将它推右后卫。这也是有可能的:
git log FETCH_HEAD
如果cherry-picked
工作困扰您的问题,通过各种手段使用git fetch [email protected]:theirusername/reponame.git theirbranch
git checkout FETCH_HEAD
# fix fix fix
git push [email protected]:theirusername/reponame.git HEAD:theirbranch
创建一个分支和替换以上detached state :ournameforbranch
和FETCH_HEAD
。
如果ANTAK的回答:
HEAD
给你:
ournameforbranch
然后(以下Przemek D的建议)使用
git fetch [email protected]:<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.
现在你有富的本地副本没有关联到它的上游。您可以更改提交到它(或没有),然后把你的富到自己的远程回购。
git fetch https://github.com/<THEIR USERNAME>/<REPO>.git <THEIR BRANCH>:<OUR NAME FOR BRANCH>
现在,foo是在GitHub的回购和当地富正在跟踪它。如果他们继续进行更改为foo你可以获取他们并合并到富。
git remote add protected_repo https://github.com/theirusername/their_repo.git
git fetch protected_repo
git checkout --no-track protected_repo/foo
下面是一个很好的有利的解决方案,与GitHub的工作检查出其他用户的叉公关分支。你需要知道拉入请求ID(其中GitHub上与PR标题显示沿)。
例:
修复你的不安全的代码#8
Alice想要合并1到提交从git push --set-upstream origin foo
git checkout foo
git fetch protected_repo
git merge protected_repo/foo
your_repo:master
用您的远程如果从her_repo:branch
不同。
替代git checkout -b <branch>
git pull origin pull/8/head
用正确的拉请求ID。
GitHub上有新相对于前一个答案的选择,只是复制/粘贴来自PR的命令行:
origin
或8
按钮Merge