如何复制一个远程git分支(而不与我的现有分支合并)?

3
假设我正在工作的是一个名为MyBranch的分支,它位于git repo中。我的同事告诉我他有一些东西需要我从他名为HisBranch的分支上拉取。为了实现这个目标,我输入以下命令:
git remote add MyCoworker $url
git checkout -b HisBranch
git pull MyCoworker HisBranch

当我执行git pull时,它告诉我正在从远程repo获取数据,但由于我通过从MyBranch分支创建HisBranch本地分支,因此它包含与MyBranch相同的文件和历史记录,而Git希望将两者合并。
我真正想要的是在我的本地repo上获得与从同事分支拉取的内容完全相同的分支,包括历史记录。我不希望立即将其与自己的分支合并。
1个回答

1
$ git remote add MyCoworker $url
$ git fetch MyCoworker

它会显示如下内容:

...
* [新分支] HisBranch -> MyCoworker/HisBranch

然后你就可以正确地检查他的分支了:

$ git checkout HisBranch

顺便提一下,如果您的存储库是主要工作的存储库(您的合作者将其分叉到自己的存储库中),则需要要求他向您发送拉取请求(也称为PR)。


我觉得有点困惑,因为我习惯使用与远程相同名称的本地分支,然后进行推送和拉取。这是一种反模式吗? - Vivian River
例如,我有一个主分支,远程也有一个主分支。我在主分支上进行更改,然后执行 git push origin master - Vivian River
如果你检出基于本地的新分支并拉取,它会将远程分支合并到本地分支中,这仅适用于你是提交该分支初始提交的人。但是,如果你想从其他人那里检出一个纯净的分支,则需要先从远程(在你的情况下是MyCoworker)获取。 - Kjuly
对于你的第二个例子,"例如,......" 这是另一种情况,因为远程和本地都有主分支。所以如果你有一个同事与你一起工作,通常你需要先从主分支拉取 ($ git pull origin master),然后再进行推送 ($ git push origin master),这里的 origin 是我们自己存储库的远程名称通用名称。 - Kjuly
为了更好地理解 OP,您可以这样想,您尝试的是基于自己创建一个新的分支,但实际上,您的同事已经创建了一个名为 HisBranch 的分支,因此您只需要从远程(MyCowoker)获取该分支并切换到该分支即可。 - Kjuly

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接