首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何从别人的存储库中拉出远程分支

如何从别人的存储库中拉出远程分支
EN

Stack Overflow用户
提问于 2011-05-04 22:14:56
回答 7查看 177.7K关注 0票数 318

我有一个托管在GitHub上的项目,有人已经分叉了。在他们的分支上,他们创建了一个新的分支"foo“,并进行了一些更改。我如何将他们的"foo“放入我的repo中也名为"foo”的新分支中?

我知道他们可以向我提交拉取请求,但我想自己发起这个过程。

假设如下所示:

因为他们派生了我的项目,我们的两个repos共享相同的'history'

  • Although,
  1. 显示他们的项目是从我的项目派生出来的,我的本地存储库没有任何对这个人的项目的引用。我需要将他们的添加为遥控器吗?
  2. 我还没有名为"foo“的分支-我不知道是否需要先手动创建它。
  3. 我肯定希望将它拉到单独的分支中,而不是我的主分支中。
EN

回答 7

Stack Overflow用户

回答已采纳

发布于 2011-05-04 22:17:35

代码语言:javascript
复制
git remote add coworker git://path/to/coworkers/repo.git
git fetch coworker
git checkout --track coworker/foo

这将设置一个跟踪远程分支coworker/foo的本地分支foo。因此,当你的同事做了一些改变时,你可以很容易地把它们拉出来:

代码语言:javascript
复制
git checkout foo
git pull

回复评论:

:)如果我想对该分支进行自己的更改,我是否应该从"foo“创建第二个本地分支"bar”并在那里工作,而不是直接在我的"foo“上工作?

你不需要创建一个新的分支,尽管我推荐这样做。你不妨直接提交给foo,让你的同事拉你的分支。但是该分支已经存在,并且您的分支foo需要设置为它的上游分支:

代码语言:javascript
复制
git branch --set-upstream foo colin/foo

假设colin是以类似方式定义的存储库(同事存储库的远程存储库):

代码语言:javascript
复制
git remote add colin git://path/to/colins/repo.git
票数 438
EN

Stack Overflow用户

发布于 2017-03-10 18:40:18

不,你不需要添加它们作为遥控器。那会很笨拙,每次都会很痛苦。

抓取他们的提交:

代码语言:javascript
复制
git fetch git@github.com:theirusername/reponame.git theirbranch:ournameforbranch

这将创建一个名为ournameforbranch的本地分支,该分支与theirbranch为它们创建的分支完全相同。对于问题示例,最后一个参数是foo:foo

注如果想出一个与您自己的分支不冲突的名称是很麻烦的,则可以进一步省略:ournameforbranch部件。在这种情况下,可以使用一个名为FETCH_HEAD的引用。你可以通过git log FETCH_HEAD查看他们的提交,然后像cherry-picked这样精挑细选他们的提交。

把它推回给他们:

通常情况下,你想修复他们的一些东西,然后把它推回去。这也是可能的:

代码语言:javascript
复制
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_HEADHEAD替换为ournameforbranch

票数 142
EN

Stack Overflow用户

发布于 2018-11-11 13:51:29

下面是一个很好的权宜之计的解决方案,它与GitHub一起从另一个用户的分支中检出PR分支。您需要知道拉取请求ID ( GitHub与PR标题一起显示)。

示例:

修复不安全代码 #8

alice希望将her_repo:branch中的1个提交合并到your_repo:master

代码语言:javascript
复制
git checkout -b <branch>
git pull origin pull/8/head

如果与origin不同,请更换遥控器。

请将8替换为正确的拉流请求ID。

票数 19
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5884784

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档