为了账号安全,请及时绑定邮箱和手机立即绑定

推送后更改git commit消息(假设没有人从远程拉出)

推送后更改git commit消息(假设没有人从远程拉出)

Git
摇曳的蔷薇 2019-10-23 15:16:12
我做了一个git commit和随后的推送。我想更改提交消息。如果我理解正确,那么这是不可取的,因为有人在进行此类更改之前可能已经从远程存储库中拉出了。如果我知道没人拉怎么办?有没有办法做到这一点?
查看完整描述

3 回答

?
千巷猫影

TA贡献1829条经验 获得超7个赞

改变历史

如果这是最新的提交,则可以执行以下操作:


git commit --amend

这将使编辑器显示最后的提交消息,并允许您编辑消息。(-m如果您要清除旧消息并使用新消息,则可以使用。)


推动

然后,当您按下按钮时,请执行以下操作:


git push --force-with-lease <repository> <branch>

或者,您可以使用“ +”:


git push <repository> +<branch>

或者您可以使用--force:


git push --force <repository> <branch>

使用这些命令时要小心。


如果其他人将更改推送到同一分支,则可能要避免破坏这些更改。该--force-with-lease选项是最安全的,因为如果有任何上游更改,它将中止(


如果您未明确指定分支,则Git将使用默认的推送设置。如果您的默认推送设置为“匹配”,则您可能会同时破坏多个分支上的更改。


之后拉/取

现在,任何已经拉出的人都会收到一条错误消息,并且他们需要通过执行以下操作来更新(假设他们自己没有进行任何更改):


git fetch origin

git reset --hard origin/master # Loses local commits

使用时要小心reset --hard。如果分支有更改,这些更改将被销毁。


有关修改历史记录的注释

销毁的数据实际上只是旧的提交消息,但--force不知道该消息,也很乐意删除其他数据。因此可以想象--force为“我想销毁数据,并且我确定要销毁哪些数据”。但是,当提交已破坏的数据时,通常可以从reflog中恢复旧的提交-数据实际上是孤立的而不是被破坏的(尽管孤立的提交会定期删除)。


如果您不认为自己要破坏数据,请远离--force…… 可能会发生坏事。


这就是为什么--force-with-lease更安全的原因。


查看完整回答
反对 回复 2019-10-23
?
慕的地8271018

TA贡献1796条经验 获得超4个赞

说啊 :


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

接着


git push --force


查看完整回答
反对 回复 2019-10-23
?
潇潇雨雨

TA贡献1833条经验 获得超4个赞

要编辑最近提交以外的提交:

步骤1:git rebase -i HEAD~n对n受影响的最后一次提交进行交互式变基。(即,如果您想更改3次提交的提交消息,请执行git rebase -i HEAD~3)


git将弹出一个编辑器来处理这些提交,请注意以下命令:#  r, reword = use commit, but edit the commit message,这正是我们所需要的。


第二步:更改pick到r了要更新味精这些提交。请勿在此处更改提交消息,它将被忽略。您将在下一步中进行操作。保存并关闭编辑器。


第三步:Git将为您r之前输入的每个修订版本弹出另一个编辑器。根据需要更新提交消息,然后保存并关闭编辑器。


步骤4:在更新所有提交消息之后。您可能要git push -f更新遥控器。


查看完整回答
反对 回复 2019-10-23
  • 3 回答
  • 0 关注
  • 503 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信