拉入不同的Git分支

时间:2015-04-29 03:53:11

标签: git

假设我创建了一个repo,它有一个名为master的分支。如果其他人派遣回购并推送到新的分支B,那么我在本地拉入B而不覆盖我的本地主分支的最佳方式是什么?我是否在本地切换到分支B然后引入更改?我的猜测是,如果我没有在本地明确切换分支,那么如果我从远程分支B中提取更改,那么我将用B覆盖我的本地主分支。这里最好的选择是什么?

4 个答案:

答案 0 :(得分:3)

你可以git fetch origin branchname。 通过做git pull origin branchname  您可以合并两个分支的更改。安装像kdiff3这样的合并工具。 您可以将这两者合并,请按照此link

进行操作

答案 1 :(得分:2)

git fetch origin
git checkout --track origin/<remote_branch_name>

答案 2 :(得分:1)

您可以使用git fetch origin branchB从[{1}}获取所有提交,而无需修改branchB或您的工作目录。

如果您要将更改应用于master,则可以在master分支上使用git merge FETCH_HEAD合并这些更改。这会创建一个新提交,其中包含mastermaster的所有更改。 branchB是最后提交的提交。

答案 3 :(得分:0)

我想当你写'#34; [某人]推送到新的分支B&#34;时,你的意思是他们推送到他们的分支仓库,而不是原始仓库origin

不是从原点获取B,而是需要从他们的fork获取:

git fetch <url/to/their/fork/repo> B

您将在其分支B中获得提交的副本,您可以使用git branch -a查看远程分支。您可以checkout远程分支使您的工作文件反映为分支B

如果需要,您可以在获取的同时创建本地分支。创建的本地分支的名称位于:

之后
git fetch <url/to/their/fork/repo> B:B

现在,您不必在相当长的分支名称上运行git checkout,而只需git checkout B

请注意,pull仅为fetch + mergemerge与当前已检出的分支发生在一起。您的猜测是正确的,因为如果您在git pull签出master时运行,则会将拉出的分支的内容合并到master。但这并没有真正覆盖,而是向master添加提交。

如果您打算多次使用他们的fork repo,可以将其添加为远程:

git remote add their_fork <url/to/their/fork/repo>

在此之后,您不需要编写整个URL,而是可以使用远程名称:

git fetch their_fork B:B