我已经提交了git并随后推送。我想更改提交消息。如果我理解正确,这是不可取的,因为在我进行此类更改之前,可能有人从远程存储库中删除了内容。如果我知道没人拉过呢?

有办法做到这一点吗?


当前回答

我对Git有点陌生,但我只是想增加我的经验。

gitcommit--modify-m“新的正确消息”

这很奏效,但下一个是我的问题。在更改提交消息之前,我已经推送了提交。最后,当我试图推到远程时,git抛出了一个异常。所以我应该在更新远程分支之前再次下拉。

git pull-origin分支名称

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您需要使用以下命令更改提交消息gitcommit--modify-m“新的正确消息”命令2添加新消息后,执行以下命令git push-f origin<your_branch_name>

命令1。

git commit --amend -m "New and correct message"

然后

命令2。

git push origin --force

如果您使用的是位桶管道,则有关相同问题的附加信息

编辑您的邮件

git commit --amend

推到服务器

git push --force <repository> <branch>

然后在管道上的push命令中添加--force

git ftp push --force

这将删除您以前的提交并推送当前提交。

在第一次推动后移除--力

我在bitbucket管道上试过了,效果很好

更改历史记录

如果是最近一次提交,您只需执行以下操作:

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中恢复旧的提交—数据实际上是孤立的,而不是被销毁的(尽管孤立的提交会定期删除)。

如果你不认为你在破坏数据,那就远离武力。。。坏事可能会发生。

这就是为什么——租赁的武力更安全。