Следуя сценарию из этого вопроса, я выполняю git rebase -s recursive -X theirs etc ...
и меня удивляет, что меня останавливают следующие типы конфликтов:
Есть ли какая-то причина, по которой стратегия не справляется с ними?
(Я не знаю, существенно ли это, но git не сообщает о конфликтах в выводе, он просто говорит Когда вы решите эту проблему, запустите «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
Это воспроизводит проблемы «удалено ими» и «удалено нами», но не t воспроизводить «добавленное ими», а также отсутствие каких-либо сообщений о конфликтах.
Из того, что я могу понять, в этом контексте «удалено ими», таким образом, означает «изменено после B, затем удалено» (поэтому мы действительно хотим удалить его в Branch2), и «удалено нами. «означает« созданный после B »(поэтому мы хотим сохранить его в Branch2)
Из того, что я могу сказать из истории моего реального (и огромного) репо,« добавленное ими »связано с неправильно обнаруженными переименованиями ( т.е. идентичные файлы в совершенно разных папках идентифицируются как переименованные).