sta*_*ack 9 git git-merge git-rebase
我想结合我的最后两次提交.结果如下git log:
现在我想将最后两个提交(在读取框中)合并到一个提交中.我怎样才能做到这一点?
kow*_*sky 14
您正在寻找squash互动功能rebase:
使用git rebase -i HEAD~2启动交互式衍合.在开始编辑器中,列出了作为rebase一部分的所有提交.在这种情况下,由于我们为调用提供了HEAD~2参数rebase,我们看到两个提交,每个提交都有前缀pick.不改变任何东西会导致rebase pick,即应用两个提交,没有什么会有所不同.相反,你想要做的pick只是一次提交,而squash另一次提交.这样,您将第二个提交压缩到第一个提交,从而导致单个提交.当您安全并立即退出时,git会向您发出新的提交消息,并表示:包含两个旧提交的更改的新提交.
请参阅此处获取详细说明.
一如既往地搞乱历史(就像将不同的提交压缩成新的一样),你应该只对那些你确信没有其他人根据他们工作的提交执行这样的操作.
axi*_*iac 14
有很多方法可以做到(使用rebase或reset).
方法使用git reset:
git status找出.如果存在未提交的更改,请将它们保存在存储中(git stash或将它们提交到临时分支上).git branch backup以在当前提交上创建备份分支.reflog或通过写下当前提交的散列可以实现相同的结果),但如果出现问题,它是恢复当前状态的最简单方法.git reset --soft HEAD~2.HEAD在过去(提交时e8de117)移动两个提交,而不会更改工作树或索引.索引和工作树现在看起来就像是在创建提交之前6aa74e4.最后两次提交中更改的所有文件都已添加到索引中.因为HEAD打开e8de117,所以下一个提交将在e8de117(它将"替换"提交6aa74e4和77c15d6)之上创建.git commit.您必须输入新的提交消息.git diff backup不应该报告任何差异)或者您已经改变主意,请跑git reset --hard backup回去从哪里开始(实际上,在步骤#2之后).backup在步骤2(git branch -D backup)中创建的分支.| 归档时间: |
|
| 查看次数: |
7867 次 |
| 最近记录: |