我使用外部编辑器来填写“git commit”的注释,如果由于某种原因提交失败,则所有注释都会消失。是否有地方存储我未能成功提交的注释?
是否有特定的git命令可以重用这些待处理注释或重复提交带有待处理注释的提交?
我使用外部编辑器来填写“git commit”的注释,如果由于某种原因提交失败,则所有注释都会消失。是否有地方存储我未能成功提交的注释?
是否有特定的git命令可以重用这些待处理注释或重复提交带有待处理注释的提交?
简而言之:
git commit -eF .git/COMMIT_EDITMSG
或者
git config --global alias.commit-reuse 'commit -eF .git/COMMIT_EDITMSG'
git commit-reuse
如果您在外部编辑器中编写提交消息,则消息将存储在.git/COMMIT_EDITMSG
中。即使提交随后失败,消息也会存储在那里。但是,下一次执行git commit
时,git会将文件重置并在其中打开编辑器。
您可以使用-F
选项告诉git使用现有文件的内容作为您的提交消息。在提交失败后,您可以执行git commit -F .git/COMMIT_EDITMSG
,git将立即创建具有存储在该文件中的消息的提交。但是,请注意,如果这样做,注释行将包含在提交消息中:
# Please enter the commit message for your changes. Lines starting
# with '#' will be ignored, and an empty message aborts the commit.
# Explicit paths specified without -i nor -o; assuming --only paths...
# ...
您还可以使用-e
选项要求git在编辑器中打开文件。使用编辑器进行提交消息时,注释行永远不会包括在内。这也允许您在创建提交之前编辑消息。因此,在git commit
失败后,只需使用git commit -eF .git/COMMIT_EDITMSG
。但请注意,如果.git/COMMIT_EDITMSG
不存在(例如您刚刚克隆了存储库),该命令将失败。
如果您不想记住-eF .git/COMMIT_EDITMSG
选项,则可以在git中创建别名。您可以通过运行以下命令来永久添加别名:
git config --global alias.commit-reuse 'commit -eF .git/COMMIT_EDITMSG'
从现在开始,每当您想要重复使用失败提交的消息时,都可以编写git commit-reuse
。如果您想再次删除别名,则可以从~/.gitconfig
中删除相关行。
-e
也是个不错的选择。我更新了我的回答,虽然这当然是你自己的回答。 - janos