如何修改现有的,未完成的提交?
我在提交消息中写了错误的东西。 另外,我忘了包含一些文件。
我如何更改提交消息/文件? 提交尚未推送。
修改最近的提交消息
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将你放入shell。 如果你在shell中:
git commit --amend
git rebase --continue
大部分这个顺序将随着各种命令的输出向你解释。 这很容易,你不需要记住它 - 只要记住git rebase --interactive
可以让你纠正提交,不管它们多久以前。
请注意,您不想更改已经推送的提交。 或者,也许你会这样做,但在这种情况下,您必须非常小心地与每个可能已经完成提交并完成工作的人沟通。 在某人将重设或重置推送到发布的分支后,如何恢复/重新同步?
链接地址: http://www.djcxy.com/p/11.html