题
我真的不明白如果我检查旧提交,进行一些修改并使用使用 git commit --amend
.
这种变化会自动传播到未来的提交吗?它是如何工作的?
解决方案
在git中,提交只是对象。当你 git commit --amend
, ,您只是与同一位父母创建新提交。最初看起来像这样:
{HEAD}
{master}
---[A]---[B]---[C]
现在你修改 C
, ,创建一个新的提交 D
:
{HEAD}
{master}
---[A]---[B]---[D]
\
\
[C]
老人 C
目前仍然存在。但是,任何分支都不再引用它,因此下次发生垃圾收集时,它将被扫除。
其他提示
为了补充约翰的回答,如果您加强了一个旧的犯罪,什么也不会发生。
old commit
v
o--o--o--o--o--o--o--o--o < original branch tip
\
o < ammended old commit & new branch tip
也许您想做的可以通过 互动式重新挤压粉碎.
与旧提交相同的父母创建了一个新的提交,而您的当前分支现在是指新提交。旧提交仍在对象数据库中,可以与 git reflog
.
不隶属于 StackOverflow