如何在git中重新评估旧合并
EclipseGit插件的一些崩溃和随后的恢复似乎导致了合并提交,而该提交并没有获取本应合并的大部分更改 如果我在Gitlab中检查提交,我看到的文件更改比我预期的要少得多。我假设基本分支的未更改文件被错误地添加到提交中,而不是从合并分支添加的较新文件 不幸的是,这都是几次提交(以及其他合并)之前的事情,并被推到了一个中心Gitlab回购协议上 如何重新评估合并并对照实际发生的情况进行检查? 我想我可以如何在git中重新评估旧合并,git,merge,Git,Merge,EclipseGit插件的一些崩溃和随后的恢复似乎导致了合并提交,而该提交并没有获取本应合并的大部分更改 如果我在Gitlab中检查提交,我看到的文件更改比我预期的要少得多。我假设基本分支的未更改文件被错误地添加到提交中,而不是从合并分支添加的较新文件 不幸的是,这都是几次提交(以及其他合并)之前的事情,并被推到了一个中心Gitlab回购协议上 如何重新评估合并并对照实际发生的情况进行检查? 我想我可以 git checkout <pre-merge-commit-hash> git
git checkout <pre-merge-commit-hash>
git checkout -b experimental_new_merge
git merge <original-merge-branch>
将已修复的文件恢复到主文件中。但我认为,后者会导致许多合并冲突需要手动排序,因为被合并处理过的一些文件也会有更新的更改。
一个大目标是检查完整性,而不仅仅是节省我再次进行更改的时间
有没有办法避免这种情况?以某种方式再次与旧分支合并(现在只会说:已经是最新的)。
或者以某种方式将较新的提交/合并重新播放到该实验分支上,然后将该分支重命名为master
A
|
A2
| \
A3 B
| \ \
A4 C B2
| \ \
F C2 B3
| \ \ \
A6 D C3 B4
- A-现任校长
- F-合并可能失败
- D-可能未正确合并的分支(A中缺少更改)
A6
,从而产生“分离头”:
现在,您可以将新合并提交M
的内容与旧合并提交F
的内容进行比较,以查看合并是否正确完成
如果不是,您有许多修复问题的选项;最好的选择取决于你的情况。一个简单的方法是将F
-vs-M
-的结果应用于提交A
的树,并提交结果:
git checkout <your-branch> # back to commit A
git diff <hash-of-F> <hash-of-M> | git apply
git checkout#返回以提交
吉特差异|吉特适用
如果<代码> git diff产生的补丁不适用,请考虑使用<代码> - 3 <代码> >代码> -3WORE/代码>使三路合并,或<代码>拒绝< /代码>应用适合的部分,然后手动解析被拒绝的部分。< /P>
git checkout <hash of commit A6>
...--A6--M <-- HEAD
\ /
X
/ \
...--D---F--A4--...
git checkout <your-branch> # back to commit A
git diff <hash-of-F> <hash-of-M> | git apply