你如何撤消错误覆盖的git提交消息?

时间:2014-03-31 17:53:21

标签: git

如果您不小心覆盖了git提交消息,有没有办法恢复它?

在:

foo@bar:/tmp/git-test$ git log
commit ad7edbdf70ca1d7f0069b50726646e235f42a02f
Author: Steve Jobs <steve@apple.com>
Date:   Mon Mar 31 11:46:24 2014 -0600

    Imporant stuff
    1. thing a
    2. thing b

commit aa502ffbd7350b37e040f59f394c0daf97a11648
Author: Steve Jobs <steve@apple.com>
Date:   Mon Mar 31 11:45:41 2014 -0600

    First commit

意外地使用第一个

中的消息覆盖提交
 git commit --amend -c aa502ffbd7350b37e040f59f394c0daf97a11648

请注意,我现在有2个提交相同的消息

foo@bar:/tmp/git-test$ git log
commit ad7edbdf70ca1d7f0069b50726646e235f42a02f
Author: Steve Jobs <steve@apple.com>
Date:   Mon Mar 31 11:46:24 2014 -0600

    First commit

commit aa502ffbd7350b37e040f59f394c0daf97a11648
Author: Steve Jobs <steve@apple.com>
Date:   Mon Mar 31 11:45:41 2014 -0600

    First commit

2 个答案:

答案 0 :(得分:1)

您可以在git日志中找到旧的git消息。

grep -r -i "Important Stuff" .git/*
.git/logs/HEAD:aa502ffbd7350b37e040f59f394c0daf97a11648 ad7edbdf70ca1d7f0069b50726646e235f42a02f Steve Jobs <steve@apple.com> 1396287984 -0600  commit: Imporant stuff
.git/logs/refs/heads/master:aa502ffbd7350b37e040f59f394c0daf97a11648 ad7edbdf70ca1d7f0069b50726646e235f42a02f Steve Jobs <steve@apple.com> 1396287984 -0600 commit: Imporant stuff

重命名提交,使用-c选项指向.git / logs / HEAD中的对象

git commit --amend -c ad7edbdf70ca1d7f0069b50726646e235f42a02f

答案 1 :(得分:1)

git reset --soft @{1}

会将您的分支提示设置为修改前的提交。