我真的不明白如果我检查旧提交,进行一些修改并使用使用 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.

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top