我已经提交了git并随后推送。我想更改提交消息。如果我理解正确,这是不可取的,因为在我进行此类更改之前,可能有人从远程存储库中删除了内容。如果我知道没人拉过呢?
有办法做到这一点吗?
我已经提交了git并随后推送。我想更改提交消息。如果我理解正确,这是不可取的,因为在我进行此类更改之前,可能有人从远程存储库中删除了内容。如果我知道没人拉过呢?
有办法做到这一点吗?
当前回答
在控制台中使用以下两个步骤:
git commit --amend -m "new commit message"
然后
git push -f
完成时间:)
其他回答
我对Git有点陌生,但我只是想增加我的经验。
gitcommit--modify-m“新的正确消息”
这很奏效,但下一个是我的问题。在更改提交消息之前,我已经推送了提交。最后,当我试图推到远程时,git抛出了一个异常。所以我应该在更新远程分支之前再次下拉。
git pull-origin分支名称
git推送源分支名称
希望我的小经验对你有所帮助。谢谢
如果使用-S参数提交工作消息,则会发生以下事件:
git checkout branch
git commit --amend -m "Your new message"
在这一点上,不要忘记您添加了一个更改,而您的遥控器是不同的,这就是为什么您需要这样做的原因:
git push --force
如果您使用VSCode,您将看到不同之处,使用--force参数,您将忽略git pull,并将更改后的消息推送到相同的提交。
更改历史记录
如果是最近一次提交,您只需执行以下操作:
git commit --amend
这将使用最后一条提交消息打开编辑器,并允许您编辑消息。(如果要删除旧邮件并使用新邮件,可以使用-m。)
推
然后,当你推动时,请这样做:
git push --force-with-lease <repository> <branch>
或者可以使用“+”:
git push <repository> +<branch>
或者您可以使用--force:
git push --force <repository> <branch>
使用这些命令时要小心。
如果其他人将更改推送到同一分支,您可能希望避免破坏这些更改。--forcewithlease选项是最安全的,因为如果有任何上游更改,它将中止(如果不显式指定分支,Git将使用默认的推送设置。如果您的默认推送设置为“匹配”,那么您可以同时销毁多个分支上的更改。
之后拉/取
任何已经拉动的人现在都会收到一条错误消息,他们需要更新(假设他们自己没有做任何更改),方法如下:
git fetch origin
git reset --hard origin/master # Loses local commits
使用重置时要小心--硬。如果对分支进行了更改,这些更改将被销毁。
关于修改历史记录的注释
被破坏的数据实际上只是旧的提交消息,但是--force不知道这一点,并且会很高兴地删除其他数据。因此,将--force想象为“我想销毁数据,我知道哪些数据正在被销毁。”但是,当提交被销毁的数据时,通常可以从reflog中恢复旧的提交—数据实际上是孤立的,而不是被销毁的(尽管孤立的提交会定期删除)。
如果你不认为你在破坏数据,那就远离武力。。。坏事可能会发生。
这就是为什么——租赁的武力更安全。
只要说:
git commit --amend -m "New commit message"
然后
git push --force
确保在正确的分支上进行更改
git checkout
#确保您在正确的分支上进行更改只是为了确定:
git checkout branchname
Then
git commit --amend -m "new message"
然后按下
git push --force