无法更改(不是最后一次)推送的提交消息

时间:2017-01-29 10:18:16

标签: git

我不想更改已被推送的提交消息,而不是最后一次提交。 正如git文档建议我刚刚完成了以下的rebase:

bot.MessageReceived = func(bot *MessengerBot, evt Event, opts MessageOpts, msg ReceivedMessage) {
  log.Println("works!", msg)
}

然后按如下方式编辑结果:

rebase -i HEAD~2

然后成功保存了提交列表文件,之后编辑了重写的提交,如下所示:

reword e499d89 some thig been done
pick 0c39034 some other thing been done

我编辑了提交消息并将其保存,但毕竟git log显示git提交及其消息没有变化。

最后问题是由于提交消息文本,由于问题跟踪器和git服务器的集成,我们在任何提交开始时出现明显的标志后添加问题ID,因此提交将如下所示:

some thig been done
#some comments here
-->list of changelist here

然后在编辑提交消息的最后阶段,整个提交消息被解释为另一个注释行(我想):

#123 some thing been done

因此,只需在尖锐符号前添加空格即可解决问题并创建新提交:

    #123 some thig been done
    #some comments here
    -->list of changelist here

P.S:我不知道它是否可以被称为git的错误?!

2 个答案:

答案 0 :(得分:0)

通过所有操作后:重写 - >输入新的提交消息 - >保存文件 - >关闭文件
你应该强制推送修改后的提交来更改提交历史记录:

$ git push --force

答案 1 :(得分:0)

假设提交日志为A-B-C-D-E<-master,并且您想要修改C的提交消息。

git checkout master
git reset C --hard
git commit --amend
#modify the change commit message, save and quit
git cherry-pick C..E
#or git cherry-pick D E
#or git cherry-pick D;git cherry-pick E
git push origin -f master:master

如果其他人克隆或获取了您之前的master,则需要通知他们将master更新为最新版本。

假设他们将本地master设为A-B-C-D-E-F-G

git fetch origin master
git reset B --hard
git rebase FETCH_HEAD
git cherry-pick F G