Git 将基本分支从分叉主分支更改为远程主分支
我将回购协议分叉到我自己的Git 将基本分支从分叉主分支更改为远程主分支,git,github,branch,rebase,Git,Github,Branch,Rebase,我将回购协议分叉到我自己的回购协议a,创建了一个新的分支a并做了一些工作,然后将远程回购协议更改为我将为其发出拉取请求回购协议B。但我的分支仍在跟踪对Repo A主分支的提交我如何将我的基础更改为Repo B的主分支。我已经推到正确的远程分支 我已经试过了,git rebase,在master上 (commit 1) - master \-- (commit 2) - (commit 3) - demo
回购协议a
,创建了一个新的分支a并做了一些工作,然后将远程回购协议更改为我将为其发出拉取请求回购协议B
。但我的分支仍在跟踪对Repo A
主分支的提交我如何将我的基础更改为Repo B
的主分支。我已经推到正确的远程分支
我已经试过了,git rebase,在master上
(commit 1) - master
\-- (commit 2) - (commit 3) - demo
\-- (commit 4) - (commit 5) - PRO
(commit 1) - master
|-- (commit 2) - (commit 3) - demo
\-- (commit 4) - (commit 5) - PRO
吉特
Git本身没有基本分支的概念。分支(大多数人以不同的方式使用这个词;请参阅)只是一个名称,该名称包含提交的哈希ID。名称标识的提交称为提示提交。该提交几乎肯定至少有一个父提交,并且父提交也在分支上。父母有自己的父母;这些提交也在分支上。通过从顶端开始并向后操作得到的链枚举了分支上的所有提交
如果您移动分支标签,Git将允许您任意移动它,以确保提交的更改位于分支上,而不会更改任何提交本身内部的任何内容。只要提交本身仍在存储库中,就可以创建任意数量的分支名称。将提交视为形成一系列连接:
C--D--E <-- branch1
/
...--A--B
\
F--G--H <-- branch2
git-rebase
所做的是复制一组提交,例如,将新副本放在这组提交中更合适的位置。例如,假设当前只能从branch2
访问的三个提交—从右侧开始,向左移动,我们发现H
,然后G
,然后F
—如果它们位于branch1
上的最后一个提交之后,则会得到改进。要实现这一点,您可以运行:
git checkout branch2
git rebase --onto branch1 branch3
它告诉Git:从我所在的位置开始查找提交,branch2
,但在两个分支会聚的位置停止。现在您已经有了正确提交的列表,请逐个复制它们,从F
开始,然后执行G
和最后一次H
。在开始复制提交之前,请检查提交E
让我们调用F
,F'
,来表示它与F
的相似程度,即使它具有不同的散列ID。一旦复制完成,图片将如下所示:
F' <-- HEAD
/
C--D--E <-- branch1
/
...--A--B <-- branch3
\
F--G--H <-- branch2
由于默认情况下,git log
不会显示任何放弃的提交,因此当您运行git log
时,您将看到:
F'-G'-H' <-- branch2 (HEAD)
/
C--D--E <-- branch1
/
...--A--B <-- branch3
F'-G'-H'
F'-G'-H' <-- branch2 (HEAD)
/
C--D--E <-- branch1
/
...--A--B <-- branch3
\
F--G--H [abandoned]
F'-G'-H' <-- branch2 (HEAD)
/
C--D--E <-- branch1
/
...--A--B <-- branch3