Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在git中重新评估旧合并_Git_Merge - Fatal编程技术网

如何在git中重新评估旧合并

如何在git中重新评估旧合并,git,merge,Git,Merge,EclipseGit插件的一些崩溃和随后的恢复似乎导致了合并提交,而该提交并没有获取本应合并的大部分更改 如果我在Gitlab中检查提交,我看到的文件更改比我预期的要少得多。我假设基本分支的未更改文件被错误地添加到提交中,而不是从合并分支添加的较新文件 不幸的是,这都是几次提交(以及其他合并)之前的事情,并被推到了一个中心Gitlab回购协议上 如何重新评估合并并对照实际发生的情况进行检查? 我想我可以 git checkout <pre-merge-commit-hash> git

EclipseGit插件的一些崩溃和随后的恢复似乎导致了合并提交,而该提交并没有获取本应合并的大部分更改

如果我在Gitlab中检查提交,我看到的文件更改比我预期的要少得多。我假设基本分支的未更改文件被错误地添加到提交中,而不是从合并分支添加的较新文件

不幸的是,这都是几次提交(以及其他合并)之前的事情,并被推到了一个中心Gitlab回购协议上

如何重新评估合并并对照实际发生的情况进行检查? 我想我可以

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中缺少更改)

您可以通过散列ID签出commit
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