2012-04-19 47 views
374

有没有一种方法可以在没有vi(或您的$EDITOR)的情况下修改提交,并提供修改提交消息的选项,但只需重新使用以前的消息?如何在不改变提交信息的情况下修改提交(重用前一个)?

+1

重复:http://stackoverflow.com/questions/5307417/can-i-skip-the-commit-message-step-when-i-run-git-commit-amend – 2013-03-06 20:17:10

+4

我会downvote我自己的问题在学习了艰难的方式之后修改的罪恶。 – 2014-08-11 06:35:47

+10

只要你遵守某些规则(比如不修改已经推送的东西),没有理由为什么修改必须是坏事。 – paullb 2014-10-20 09:48:25

回答

567

既然git 1.7.9版本,你也可以用git commit --amend --no-edit来得到你的结果。

请注意,这不包括来自其他提交的元数据,例如对您而言可能重要或可能不重要的时间戳。

+27

您可以还可以通过添加别名来更轻松地默认为--no-edit标志:“amend = commit -a --amend --no-edit” – Jherico 2013-04-22 21:00:44

+16

你必须爱上'git add README.md && git commit --amend --no-edit && git push -f' – 2014-02-13 10:44:49

+0

我希望这可以在没有'--amend'的情况下工作,但它似乎不会:( – 2015-08-18 00:58:27

81

git commit -C HEAD --amend会做你想做的。 -C选项从另一个提交获取元数据。

+7

只需添加到Andy的答案。如果这是你经常做的事情,那么你可以使用'git config --global alias.amend'commit --amend -C HEAD''为它设置一个别名。然后你可以使用'git modify'作为快捷方式。 – mikej 2012-04-19 21:35:35

+7

来吧,不要懒惰,请升级git并使用Shaggle建议的内置命令!加一个-C选项。 – 2012-06-26 15:56:50

+3

不仅时间戳,而且作者信息! – user1338062 2015-08-27 15:20:59

32

如果您已将vi(m)设置为$EDITOR,则另一个(愚蠢的)可能性为git commit --amend <<< :wq

+18

即使这个用例没有必要,我也没有意识到你可以管到vim。这开辟了一些有趣的可能性。伟大的提示。 – 2016-01-11 20:38:11

+3

'... <<< ZZ'可能更少打字;) – Ruslan 2016-09-04 12:10:28

+1

..甚至更少 - '... <<<:x' :) – skwisgaar 2016-12-01 14:19:11