我在承诺信中写错了。
我怎么能改變訊息呢?承諾尚未推動。
我在承诺信中写错了。
我怎么能改變訊息呢?承諾尚未推動。
当前回答
啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊
另一种方法是删除最后的承诺,但保持它的变化,这样你就不会失去你的工作。
git reset --soft HEAD~1
git commit -m 'New and corrected commit message'
我总是这样做,如果我忘记添加文件或做出更改。
请记住指定 - 软而不是 - 硬,否则你会失去这个承诺完全。
其他回答
如果您正在使用 Git GUI,您可以更改未被推的最后一个承诺:
Commit/Amend Last Commit
如果您正在使用 Git GUI 工具,则有一个按钮称为 修改最后的承诺. 点击该按钮,然后它将显示您的最后的承诺文件和消息. 只需编辑该消息,您可以承诺它一个新的承诺消息。
或使用此命令从控制台/终端:
git commit -a --amend -m "My new commit message"
要改變以前的承諾,做你想要的變化,並進行這些變化,然後執行
git commit --amend
这将打开一个文件在你的文本编辑器代表你的新的承诺消息. 它开始与文本从你的旧承诺消息。 改变承诺消息,如你想要,然后保存文件,然后停止你的编辑器完成。
要更改以前的承诺,并保持相同的日志消息,运行
git commit --amend -C HEAD
修复以前的承诺,通过完全删除它,运行
git reset --hard HEAD^
如果你想编辑多个承诺消息,运行
git rebase -i HEAD~commit_count
此命令启动您的编辑器. 标记第一个命令(您想要更改的命令)为“编辑”而不是“选择”,然后保存和输出您的编辑器。
git commit --amend
git rebase --continue
注意: 您也可以从 git commit 打开的编辑器“做您想要的更改” - 更改
使用
git commit --amend
要详细理解,一个很好的帖子是 4. 重新写 Git 历史. 它也谈论什么时候不使用 git commit --amend。
如果您需要在多个分支上更改一个旧的承诺消息(即与错误消息的承诺存在于多个分支),您可能需要使用:
git filter-branch -f --msg-filter \
'sed "s/<old message>/<new message>/g"' -- --all
Git 将创建一个临时目录,以重新编写,并在 refs/original/中备份旧参考。
-f 将执行操作,这是必要的,如果临时目录已经存在,或者如果已经有参考存储在 refs/original 下,如果不是这样,你可以放下这个旗帜. -- 将过滤分支选项与审查选项分开。
由于您的旧参考备份,您可以在执行命令之前轻松地返回状态。
说,你想恢复你的主人,并在分支 old_master 中访问它:
git checkout -b old_master refs/original/refs/heads/master