Попробуйте git merge-file
. Он объединяет два файла в трехстороннем объединении.
git merge-file <current-file> <base-file> <other-file>
В вашем случае current-file
- это A's Pluto/test.txt
, other-file
- это B's Pippo/test.txt
. Что касается base-file
, вы можете узнать, какой коммит А впервые ввел Pluto/test.txt
, по git log A --reverse -- Pluto/test.txt
. Первый коммит в выводе - это то, что мы хотим, и предположим, что это abc123
.
Извлеките ветку A, чтобы у нас было current-file
.
git checkout A
Получить base-file
.
git cat-file -p abc123:Pluto/test.txt > base.txt
Получить other-file
.
git cat-file -p B:Pippo/test.txt > other.txt
Запустите трехстороннее объединение файлов.
git merge-file Pluto/test.txt base.txt other.txt
Открыть Pluto/test.txt
. Если есть какие-либо конфликты, разрешите их. Сохранить и выйти. Добавьте и передайте изменения.
git add Pluto/test.txt
git commit
Очистить base.txt
и other.txt
.
rm base.txt other.txt