832

有没有办法修改提交而不vi(或您的$EDITOR)弹出修改您的提交消息的选项,而只是重用以前的消息?

4

6 回答 6

1285

从 git 1.7.9 版本开始,您也可以使用它git commit --amend --no-edit来获取结果。

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

于 2012-04-28T16:33:42.043 回答
142

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

于 2012-04-19T21:31:31.827 回答
80

另一种(愚蠢的)可能性是git commit --amend <<< :wq如果你有 vi(m) as $EDITOR

于 2016-01-11T17:25:28.913 回答
34

要扩展已接受的答案,您还可以执行以下操作:

git commit --amend --no-edit -a

添加当前更改的文件。

于 2019-05-02T03:12:14.597 回答
22

您可以保存使用已接受答案的别名,以便可以像这样使用它:

git oops将添加所有内容,并使用相同的消息进行修改

git oops -m "new message"将修改替换消息


这是别名

 oops = "!f(){ \
    git add -A; \
    if [ \"$1\" == '' ]; then \
        git commit --amend --no-edit; \
    else \
        git commit --amend \"$@\"; \
    fi;\
}; f"
于 2019-05-23T02:41:44.697 回答
8

只是为了增加一些清晰度,您需要使用 进行更改git add,然后修改最后一次提交:

git add /path/to/modified/files
git commit --amend --no-edit

如果您忘记在上次提交中添加一些更改,或者当您想添加更多更改而不通过重用上次提交来创建新提交时,这尤其有用。

于 2020-09-22T13:27:29.307 回答