0

我处于一种情况,我想编辑旧的、已经推送的代码的提交消息。就我而言,当然,我的主分支和其他几个分支,例如 v1.0、v2.0 和 v3.0。我要更新其消息的提交是在分支 v1.0 是“主”时进行的。在我的代码的每个新版本中,我还在每个分支上放置一个标签以启动,然后再进行不同的修复(1.0、1.1 等)。例如,在分支 v1.0 中,我有一个标记为 1.1 的修复(代表新版本)。在我的情况下,提交消息出现的代码位于标签 1.0 下。我尝试了这里描述的整个过程https://help.github.com/articles/chang-a-commit-message/(修改旧的或多个提交消息的消息)但我仍然显示提交消息出现在标签 1.0 的“下方”(我使用的是 SmartGit,这就是我说“低于”的原因)。如果我键入git show commit_id,我仍然会看到带有旧消息的提交...

有人知道如何从 git 中完全删除此提交消息吗?提前感谢您的回复。

(我对 git 不是很好,所以现在我只是想按照互联网上给出的解释......)

也许我可以重新创建存储库并更改这些提交消息,同时保留存储库的其余历史记录?有人可能已经这样做了?:)

4

2 回答 2

1

更改提交消息或父提交会更改提交 ID,这意味着就 git 而言,它是一个不同的提交。

如果您想更改标签以指向您修改的历史记录,您需要在修改的历史记录中找到相应的提交,将标签指向新的提交,然后强制推送它(参见https://stackoverflow.com/a/21127037 /5083516 )

但总的来说,在 git 中更改已发布的历史是一个坏主意,只能在极端情况下进行,而不仅仅是纠正小错误。任何在历史更改之前克隆您的仓库然后尝试拉取的人都可能最终陷入合并地狱。

于 2018-06-25T16:31:33.977 回答
0

鉴于自从您推送提交后没有人向上游推送任何内容,您可以使用:

git push --force-with-lease

在您通过--amend.

不过,这在您的链接中有所解释。我假设您在推送修改后的提交后没有fetch从存储库中获取?该问题可能是由您的工具引起的,请尝试重新导入整个存储库。

于 2018-06-25T16:15:30.960 回答