2016-09-19 80 views
0

看着我的提交树,我看到一个相对较旧的推送提交了不正确的描述。 我想改变它。那可能吗?我该怎么做?如何修改旧的现有推送提交?

该提交已被推送到服务器。该提交是一个旧的提交,其后提交了很多提交。我只想更改消息,而不是内容。

+0

http://stackoverflow.com/a/179147 – mm759

+3

可能重复[如何修改现有的,unpushed提交?](http://stackoverflow.com/questions/179123/how-to-modify-existing-unpushed - 提交) – Vampire

+0

我试过这个,但它不适用于旧的提交。或者,我可能只是不明白如何将它应用到一个旧的。@ mm759 –

回答

2

无论如何,您必须做force push(不推荐),它会重写该提交中的整个树。

git rebase -i HEAD~n # Displays a list of the last n commits on the current branch 

从列表类似,

pick e499d89 Delete CNAME 
pick 0c39034 Better README 
pick f7fde4a Change the commit message but push the same commit. 

# Rebase 9fdb3bd..f7fde4a onto 9fdb3bd 

变化pickreword

pick e499d89 Delete CNAME 
reword 0c39034 Better README #line to change the message 
pick f7fde4a Change the commit message but push the same commit. 

# Rebase 9fdb3bd..f7fde4a onto 9fdb3bd 
  • 保存并关闭提交列表文件。在每个生成的提交文件中, 键入新的提交信息,保存该文件并关闭它。

    然后

    git push --force 
    

希望这helps.for更多信息https://help.github.com/articles/changing-a-commit-message/

3

这可能吗?

是,itzmeontv的回答涵盖了这

我该怎么办呢?

不要。提交消息是提交的一部分,并影响SHA1哈希(以及其他元数据,如父提交)。

更改消息因此创建一个新的提交(与在树中的相同的效果),因此,也重写每个后续提交只是改变他们的父母。

也就是说,它构造了一个以该原始提交的新版本开始的并行复制时间线。其他任何与原始时间线相反的人都会不高兴。

+1

请注意,即使一旦你说服每个人都容忍你的历史重写,他们仍然会拥有旧的提交,直到它被垃圾收集,并且只要他们希望它永远活着就可以标记它。 – Useless