修改旧的推送提交消息安全吗



我遵循本文档修改了一条已推送的提交消息。我现在有了我的本地分支机构,其中包含修改后的消息,以及修改后的所有承诺的副本。

我确信其他人已经取消了这些承诺。

推送我当地的分店安全吗?会给其他人带来什么后果?

如果您修改了任何提交,则意味着您已经重写了该分支的历史记录。请注意,仅仅更改提交消息就意味着Git创建了一个新的提交来代替旧的提交。我不知道您是使用了交互式rebase、filter分支还是git commit --amend,但它不会改变太多情况。

推送此分支的后果是,其他使用此分支的人在尝试拉取时可能会得到合并提交。原因如下图所示:

remote: A -- B -- C -- E       # you rewrote D to C
local:  A -- B -- D -- E

当您的一位同事尝试拉取时,Git会发现B提交是本地分支和远程分支之间的共同祖先。它将首先尝试用C -- E来快进本地分支,但随后意识到这也是不可能的,因为本地分支已经分叉,并且在B之上有自己的一组提交。因此,Git最终将使用远程更改创建合并提交。但这将包括提交CD,这可能会导致怪异。

发生这种情况的唯一例外是,自提交B或更早版本以来,没有提取分支的人。在这种情况下,这样的人不会注意到你重写了那个承诺,因为他的当地历史一开始就不知道这个承诺。

注意,如果你想继续,你的同事可能想这样做:

git fetch origin                 # update tracking branches
git reset --hard origin/master   # reset local master to remote (effectively overwrite)

最新更新