我已经提交了git并随后推送。我想更改提交消息。如果我理解正确,这是不可取的,因为在我进行此类更改之前,可能有人从远程存储库中删除了内容。如果我知道没人拉过呢?
有办法做到这一点吗?
我已经提交了git并随后推送。我想更改提交消息。如果我理解正确,这是不可取的,因为在我进行此类更改之前,可能有人从远程存储库中删除了内容。如果我知道没人拉过呢?
有办法做到这一点吗?
当前回答
要编辑除最近提交以外的提交,请执行以下操作:
步骤1:git rebase-i HEAD~n为受影响的最后n次提交执行交互式rebase。(即,如果您想将提交消息3改回提交,请执行gitrebase-i HEAD~3)
git将弹出一个编辑器来处理这些提交,请注意以下命令:
# r, reword = use commit, but edit the commit message
这正是我们需要的!
步骤2:将要更新消息的提交的pick更改为r。不要在此处更改提交消息,它将被忽略。下一步你会这么做。保存并关闭编辑器。
请注意,如果您编辑了重新命名的“计划”,但它没有开始允许您重命名文件的过程,请运行:
git rebase --continue
如果要更改用于交互式会话的文本编辑器(例如,从默认vi更改为nano),请运行:
GIT_EDITOR=nano git rebase -i HEAD~n
第三步:Git将为您之前的每个修订弹出另一个编辑器。根据需要更新提交消息,然后保存并关闭编辑器。
步骤4:更新所有提交消息后。您可能需要执行gitpush-f来更新远程。
其他回答
要编辑除最近提交以外的提交,请执行以下操作:
步骤1:git rebase-i HEAD~n为受影响的最后n次提交执行交互式rebase。(即,如果您想将提交消息3改回提交,请执行gitrebase-i HEAD~3)
git将弹出一个编辑器来处理这些提交,请注意以下命令:
# r, reword = use commit, but edit the commit message
这正是我们需要的!
步骤2:将要更新消息的提交的pick更改为r。不要在此处更改提交消息,它将被忽略。下一步你会这么做。保存并关闭编辑器。
请注意,如果您编辑了重新命名的“计划”,但它没有开始允许您重命名文件的过程,请运行:
git rebase --continue
如果要更改用于交互式会话的文本编辑器(例如,从默认vi更改为nano),请运行:
GIT_EDITOR=nano git rebase -i HEAD~n
第三步:Git将为您之前的每个修订弹出另一个编辑器。根据需要更新提交消息,然后保存并关闭编辑器。
步骤4:更新所有提交消息后。您可能需要执行gitpush-f来更新远程。
git commit --amend
使用编辑提交消息打字键盘
git push --force
这对我来说很好,
git签出原点/分支名称
如果您已经在分支中,那么最好进行拉入或重入
git pull
or
git -c core.quotepath=false fetch origin --progress --prune
稍后您可以简单地使用
git commit --amend -m "Your message here"
或者如果您想打开文本编辑器,请使用
git commit --amend
如果你有很多评论,我更喜欢使用文本编辑器。您可以使用命令设置首选文本编辑器
git config --global core.editor your_preffered_editor_here
无论如何,当您更改完提交消息后,保存并退出
然后运行
git push --force
你已经完成了
我对Git有点陌生,但我只是想增加我的经验。
gitcommit--modify-m“新的正确消息”
这很奏效,但下一个是我的问题。在更改提交消息之前,我已经推送了提交。最后,当我试图推到远程时,git抛出了一个异常。所以我应该在更新远程分支之前再次下拉。
git pull-origin分支名称
git推送源分支名称
希望我的小经验对你有所帮助。谢谢
我第一次尝试重命名已经推送的大约6条旧提交消息,之后我又做了进一步的提交。
因此,这是最糟糕的案例“案例4:已推送+旧提交”。
我是Vim(现在是Nvim)的用户,也是Vim《逃犯》的超级粉丝。所以我就是这样做的。
这是您在《逃犯》中关于重新定基的一般帮助:
Rebase maps ~
ri Perform an interactive rebase. Uses ancestor of
u commit under cursor as upstream if available.
rf Perform an autosquash rebase without editing the todo
list. Uses ancestor of commit under cursor as
upstream if available.
ru Perform an interactive rebase against @{upstream}.
rp Perform an interactive rebase against @{push}.
rr Continue the current rebase.
rs Skip the current commit and continue the current
rebase.
ra Abort the current rebase.
re Edit the current rebase todo list.
rw Perform an interactive rebase with the commit under
the cursor set to `reword`.
rm Perform an interactive rebase with the commit under
the cursor set to `edit`.
rd Perform an interactive rebase with the commit under
the cursor set to `drop`.
r<Space> Populate command line with ":Git rebase ".
r? Show this help.
获取提交列表。:Git日志--单行我想修复第12行的提交消息(4d43a1b构建(MPL-402):editorconfigfixformesages.json),因为它不是正确的常规提交格式。我将光标放在提交哈希4d43a1b上,然后键入rw这将“在光标设置为reword的情况下执行一个交互式rebase和commit”。请注意,与gitrebase-i HEAD~X相比,这是多么好-知道X是什么并不是那么简单。现在,这将为您提供正确的gitrebase命令。所以用:wq写并退出缓冲区然后按照git/逃犯指导的步骤进行操作。我的一个提交出现了合并冲突,我通过正常的fugitve合并冲突过程解决了这个问题。
希望这足以让你度过第一个“我以前从未做过一次重新训练,我到底该做什么?”的难关。如果您需要后续步骤的帮助,请给我留言。