更改已推送的repo的提交消息

时间:2013-12-14 19:08:34

标签: git github message commit

我不小心用错误的提交消息推送了一个repo。我已经按照互联网上提供的解决方案,但它没有改变我的提交消息。我尝试通过创建一个ReadMe.txt文件并使用这样的新提交消息推送它来解决问题:

git add .
git commit -amend -m 'My New Correct Message'
git push origin master

但是它没有更改我的repo中其余文件的提交消息。

PS:我在github上推了一个eclipse项目,所以它有很多文件夹和文件,我想改变所有这些的提交信息。

我发现git没有推送我打算用新消息推送的所有文件和文件夹,因为它们没有被修改并且和以前一样,所以我想我无法更新我的提交消息。

我该如何解决这个问题?

此致

2 个答案:

答案 0 :(得分:2)

历史就像你只有不同的[任何]的历史是不同的历史。烹饪它们非常容易。每个人都喜欢说出这样做的可怕事情,但所有这一切归结为如果你要将一个参考文献转换为重写的历史记录,你必须告诉所有可能已经获得旧历史的人重新获得新历史记录如果他们有任何改变,他们的工作。如果这很容易做到,重写是你的朋友。

有三种主要方法可以更改当前提交的版本,amendrebase -ifilter-branchamend用于改变单个提示提交,从评论中可以看出,你不仅仅有一个提示。如果您只有少量,最多可以说十几个?,请git rebase -i --onto lastgoodcommit lastgoodcommit,将所有pick更改为reword,然后逐个编辑提交消息。所以,说你有

$ git lgdo  # alias for log --graph --decorate --oneline --all
* dea1611 (HEAD, a) -
* e628853 Initial dynamic-selchar
* a4caf1a Can't call InvalidateDi
* cff32b3 Can't call InvalidateDi
* aa8d514 This branch ctd's for s
* 55787bc more refactoring to red
* a0cfdb7 Beginnings of multipage
* 3a8296b Apple-polishing
* 5bbd1ee Okay, the single-displa
* 31c60fe Version 0.0a: basic fun
* ae8379b .
* 6b0edc6 Little light refactorin
* 834cfbf More prep for menu/butt
* e842e61 wip
* 4a1b928 More UI decode/route pr
* b836444 Baseline development

并且“Apple-polishing”之后的所有内容都有一个错误的提交消息,你会做

git rebase -i --onto 3a82 3a82    # or :/^Apple :/^Apple

,例如vim :%s,^pick,reword,|wq开始循环。

完成后,git push origin +master

答案 1 :(得分:0)

git push origin +master

应该做的伎俩。但是小心!:如果根据您发布的分支机构有其他人,请不要这样做,否则您将破坏他们的工作,迫使他们重新投入。