Ben*_*jol 11 git conflict rebase
继这个问题的情景之后,我正在表演git rebase -s recursive -X theirs etc...并且很惊讶地被以下类型的冲突所阻止:
这个策略有没有理由不应对这些?
(我不知道这是否重要,但是git不报告输出中的冲突,它只是说When you have resolved this problem run "git rebase --continue")
更新这里的脚本不能完全重现,但几乎:
git init
git symbolic-ref HEAD refs/heads/Branch1  #just to get the 'right' branch name
echo Added in A > DeletedByThem.txt
git add -A
git commit -m A
echo Modified in B >> DeletedByThem.txt
git add -A
git commit -m B
echo Modified in C >> DeletedByThem.txt
echo Added in C > DeletedByUs.txt
git add -A
git commit -m C
git checkout -b Branch2
echo Modified in D >> DeletedByUs.txt
git rm DeletedByThem.txt
git add -A
git commit -m D
echo Modified in E >> DeletedByUs.txt
git add -A
git commit -m E
在这一点上,你应该有这个:
Branch1:    A - B - C
                     \
Branch2:              D - E
我们想要的是:
Branch1:    A - B - C
                 \
Branch2:          D - E
所以:
git rebase -s recursive -X theirs --onto [SHA of B] Branch1 Branch2
这复制了"由他们删除"和"由我们删除"的问题,但没有重现"由他们添加",也没有重现任何冲突报告.
从我可以收集到的,在这个上下文中"被他们删除"因此意味着"在B之后修改,然后删除"(所以我们确实想在Branch2中删除它),"我们删除"意味着"在B之后创建"(所以我们想把它保存在Branch2中)
从我从真实(和巨大)回购的历史中可以看出,"由他们添加"与错误检测到的重命名有关(即,完全不同的文件夹中的相同文件被识别为重命名).
| 归档时间: | 
 | 
| 查看次数: | 2324 次 | 
| 最近记录: |