git更改提交消息(修改)

时间:2018-06-25 16:10:00

标签: git amend

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

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

(我对git不太满意,所以现在我只是在尝试遵循Internet中给出的说明...)

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

2 个答案:

答案 0 :(得分:1)

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

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

但是,一般来讲,更改git中已发布的历史记录是一个坏主意,仅应在极端情况下进行,而不仅仅是纠正一些小错误。在历史记录更改之前克隆您的存储库,然后尝试提取的任何人都可能会陷入合并地狱。

答案 1 :(得分:0)

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

{'w': 'w.jpg', 'a': 'a.jpg', 's': 's.jpg', 'x': 'x.jpg', 'v': 'v.jpg', 'q': 'q.jpg'}

通过git push --force-with-lease在本地更改提交后。

这在您的链接中有所说明。我假设您在推送修订后的提交后没有从存储库中--amend吗?问题可能是由您的工具引起的,请尝试重新导入整个存储库。