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更安全的原因。
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更新遥控器。
- 3 回答
- 0 关注
- 503 浏览
添加回答
举报