我当前的 Git 存储库有三个分支:mainline
、feature_a
和 feature_b
。历史如下:
mainline
从远程仓库克隆feature_a
分支已从mainline
checkout
- 对
feature_a
进行了更改并提交为commit_a
feature_b
分支已从feature_a
checkout
- 对
feature_b
进行了更改并提交为commit_b
- 更改了
feature_a
并修改为commit_a
如何使用修改为 commit_a
的更改更新 feature_b
分支?
最佳答案
你的历史可能看起来像这样:
A' [feature_a]
/
*--*--*--* [mainline]
\
A [original feature_a]
\
B [feature_b]
提交 A
是您在 feature_a
上所做的原始提交。当您使用 git commit --amend
修改提交时,它会创建一个新 提交,A'
。
您需要 rebase feature_b
以将其附加到新的提交 A'
。做:
git rebase --onto feature_a A feature_b
(您可能也可以简单地执行 git rebase feature_a feature_b
,但我不确定这将如何工作,因为您修改了提交 A
.)
现在您的历史记录将如下所示:
B' [feature_b]
/
A' [feature_a]
/
*--*--*--* [mainline]
从技术上讲,提交 A
和 B
仍在 repo 协议(protocol)中,但由于它们未被使用,Git 稍后将对它们进行垃圾回收。
关于git - 使用 commit --amend 时使子分支与父分支保持同步,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39988713/