Следуя сценарию из этого вопроса, я выполняю 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)
Из того, что я могу судить по истории моего реального (и огромного) репо, «добавленные ими» связаны с неправильно обнаруженными переименованиями (то есть идентичные файлы в совершенно разных папках, идентифицируемых как переименования).