【发布时间】:2015-11-21 13:33:59
【问题描述】:
我从 ide (intellij idea) 进行了巨大的合并,所以当所有的冲突都解决了,som 代码被修改了,我确实提交了(合并的),然后注意到有两个文件正在重新提交。所以我再次承诺。
有两个问题:
为什么我有第二次提交。那是因为 IDE 不知何故错过了
added提交合并(IDE 不够聪明,无法在一次合并的上下文中看到所有这些更改?)。如果我忘记将add文件写入index会发生什么情况,如果我在合并后使用命令行(?)如何还原这两个提交,以便进行一次纯合并?
喜欢图片:
[commit1]
我尝试了git rebase -i rebase HEAD~2(只是合并两个提交的第一个想法),但这显示了所有这 121 个 commists - 一个 commit1 和 120 来自 merge-commit。
基本上我想将我的 'lost'/'detached' [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 将没有任何冲突,因为它已经被合并了..所以这可能不会显示它是从哪里合并的真实(hi)故事..但至少最终结果应该是相同的。理论上。
?
【问题讨论】:
-
还有这个孩子,这就是为什么使用 IDE 的 Git 集成始终需要您自担风险,以及为什么几乎总是首选使用 CLI。您可能能够通过交互式 rebase 将提交压缩在一起(如果您还没有推送您的提交)。但是,请确保它适用于合并提交,因为我不确定。
-
IDE 与合并配合得很好,所以我看到了很好的图片,更改了什么以及如何更改。
-
我对任何 Git GUI 都遵循“看,不要碰”的规则。
标签: git intellij-idea merge git-revert