修改最后的 git 提交消息会创建不同的功能分支版本?

Amending last git commit message creates diverged feature branch version?

我有一个功能分支,想更改以前的提交消息。我在那里执行命令:

git commit --amend

当尚未推送提交时,它会按预期工作,因此会创建一个新提交并替换为前一个(本地)。但是,如果提交被推送到远程分支,则会创建一个分支版本,因此我看到 1 个拉和 1 个推。因此,我需要进行提交合并,它实际上通过创建全新的提交将更改后的提交合并到功能分支中。但是,我不需要这个冗余提交。

我知道我们永远不应该改变 public 分支中的提交,但是这是我个人的功能分支,我用它来推送并且有时在家工作,因此我需要推送。所以问题是,这是预期的行为还是我遗漏了什么,这就是为什么我被要求执行合并提交?

您似乎理解 git 在您描述的场景中的行为背后的基本原理。如果你是唯一提交到这个分支的人,那么在将分支推送到远程仓库时使用 -f 标志可以解决合并问题,如下所示:

git push -f origin master