Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Git 将主更改拉入分叉分支_Git - Fatal编程技术网

Git 将主更改拉入分叉分支

Git 将主更改拉入分叉分支,git,Git,我有一个主分支(a)。我用叉子叉主人(B-从A叉)。从分叉主节点(B)创建了一个分支,比如说C 现在,如果对主分支A进行了更改,我希望能够在C中提取这些更改 在这种情况下应该使用哪些git命令 有几种方法,但我会使用的一种方法是首先将B重设为A,然后将C重设为B。这样,您可以保持一条直线。您可以合并A: git merge A -m "Bringing changes from A" 您可以在a上重新设置基址,而忽略B的更改: git rebase --onto A B C 您可以合并到B中

我有一个主分支(a)。我用叉子叉主人(B-从A叉)。从分叉主节点(B)创建了一个分支,比如说C

现在,如果对主分支A进行了更改,我希望能够在C中提取这些更改


在这种情况下应该使用哪些git命令

有几种方法,但我会使用的一种方法是首先将B重设为A,然后将C重设为B。这样,您可以保持一条直线。

您可以合并A:

git merge A -m "Bringing changes from A"
您可以在a上重新设置基址,而忽略B的更改:

git rebase --onto A B C
您可以合并到B中,然后将C重设为B

git checkout B
git merge -m "Merging changes from A" A
git checkout C
git rebase B
您也可以重新设置B anto A的基址,然后将C的基址重新设置到新的B上,但这需要一些额外的工作:

git branch temp B # set temp where B was when we started
git checkout B
git rebase A
git rebase --onto B temp C # rebase C onto the new B
这取决于你的想法

现在,如果对主分支A进行了更改,我希望能够在C中提取这些更改

第一件事:如果您想使用原始存储库,比如说,该repo分支的克隆,您应该将原始repo添加为远程存储库。例如,如果您想将原始回购协议称为“原始”,您可以:

git remote add original https://myremotegit.mycompany.com/path_to_original_repo.git
然后,如果您真的只想将更改拉入分支,请签出分支并执行拉入操作:

git pull original master
但正如乔尔凡所说,这可能不是你真正想做的。通常,您会做这种事情来保持功能分支与与其他共享的主分支同步,因为您计划最终将您在自己的分支中所做的任何更改合并回该共享分支。使用
rebase
而不是
pull
在这里很有帮助,因为它使来自master的更改出现在历史记录中您自己的更改之前,并且避免了可能很难解决的合并冲突。

通常,您说您“分叉”了一个存储库,这意味着您创建了一个新的存储库,它是您开始使用的存储库的副本。因此,如果“主”是指回购协议中的分支机构(通常如此),那么说我分叉了主,有点令人困惑。