我进行了一次大合并,使用的是IDE(IntelliJ IDEA)。当所有冲突都解决完毕并且有些代码被修改后,我提交了这个合并。然后我注意到还有两个文件没有提交,所以我又进行了一次提交。
有两个问题:
为什么我需要进行第二次提交?这是因为IDE在合并时不够聪明,错过了“添加”提交吗?如果我在合并后使用命令行忘记将文件添加到索引中,是否会发生这种情况?
如何撤销这两个提交,以便我可以进行一个纯粹的合并?
像图片一样:
[commit1] <- [megre-commit] <- [before-commit] | (master)
我尝试了 git rebase -i rebase HEAD~2
(只是想要合并两个提交的第一个想法),但是它显示了所有121条提交记录——一个commit1和120个merge-commit。
基本上我想要将我的“丢失/分离的”[commit1] 添加到 [merge-commit] 中并进行一次合并。
更新:
// revert two commits to have one
1. git reset --soft HEAD~
2. git revert -m 1 merge-commit
3. git commit
我期望会再次看到改变,所有那些1+120的提交。但是接下来我该如何合并呢?
// move my merged stuff into new branch
4. git push origin -u new_branch
// move back on history in master branch
5. git reset --hard before-commit
6. git merge new_branch
7. git push -f origin master
那么这个 git merge new_branch 将会顺利进行,因为它已经被合并了...所以可能不能真实地显示从哪里合并的历史记录...但至少最终结果应该是相同的。理论上来说。
?