如何修改现有的,未完成的提交?

我在提交消息中写了错误的东西。 另外,我忘了包含一些文件。

我如何更改提交消息/文件? 提交尚未推送。


修改最近的提交消息

git commit --amend

将打开您的编辑器,允许您更改最近提交的提交消息。 另外,您可以直接在命令行中使用以下命令设置提交消息:

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

...但是,这可以使多线提交消息或小的更正输入更麻烦。

确保在执行此操作之前没有任何工作副本更改,否则他们也会提交。 (Unstaged更改不会被提交。)

更改已经推送到远程分支的提交消息

如果你已经将你的提交推送到你的远程分支,那么你需要强制推送提交:

git push <remote> <branch> --force
# Or
git push <remote> <branch> -f

警告:强制推送将使用本地状态覆盖远程分支 。 如果远程分支上有您在本地分支中没有的提交,则将失去这些提交。

警告:谨慎修改您已与其他人共享的提交。 修改提交实质上会将它们重写为具有不同的SHA ID,如果其他人拥有您已重写的旧提交副本,则会出现问题。 任何拥有旧提交副本的人都需要将他们的工作与新重写的提交同步,这有时会很困难,所以在尝试重写共享提交历史记录时确保与其他人协调,或者避免重写共享提交共。


使用交互式底座

另一个选择是使用交互式底座。
这允许您编辑任何要更新的邮件,即使它不是最新的邮件。

为了做一个混帐南瓜,请按照下列步骤操作:

// X is the number of commits to the last commit you want to be able to edit
git rebase -i HEAD~X

一旦你压缩提交 - 选择e/r编辑信息

在这里输入图像描述

有关Interactive rebase的重要说明

当您使用git rebase -i HEAD~X可以有超过 X提交。 Git将“收集”最后一次X提交中的所有提交,如果在该范围之间存在合并,您将看到所有提交,所以结果将为X +。

好的提示:

如果您必须为单个分支执行更多操作,并且在修改内容时可能会遇到冲突,请设置git rerere并让git自动为您解决这些冲突。


文档

  • git-commit(1)手册页

  • git-rebase(1)手册页

  • git-push(1)手册页


  • git commit --amend -m "your new message"
    

    如果您想要解决的提交不是最新的:

  • git rebase --interactive $parent_of_flawed_commit

    如果您想修复多个有缺陷的提交,请通过其中最老的一个的父代。

  • 一位编辑将出现,并列出自你提交的所有提交的所有提交。

  • 在您想要修复的任何提交之前,将pick更改为reword (或旧版本的Git,以进行edit )。
  • 一旦保存,Git将重播列出的提交。

  • 对于你想要改写的每一个提交,Git会把你放回你的编辑器。 对于你想要编辑的每一个提交,Git将你放入shell。 如果你在shell中:

  • 以任何你喜欢的方式改变提交。
  • git commit --amend
  • git rebase --continue
  • 大部分这个顺序将随着各种命令的输出向你解释。 这很容易,你不需要记住它 - 只要记住git rebase --interactive可以让你纠正提交,不管它们多久以前。


    请注意,您不想更改已经推送的提交。 或者,也许你会这样做,但在这种情况下,您必须非常小心地与每个可能已经完成提交并完成工作的人沟通。 在某人将重设或重置推送到发布的分支后,如何恢复/重新同步?

    链接地址: http://www.djcxy.com/p/11.html

    上一篇: How to modify existing, unpushed commits?

    下一篇: What is the correct JSON content type?