У меня есть два удаленных git-репозитория, A и B. B должен содержать все файлы, которые находятся в A, и может содержать дополнительные файлы.
Добавление новых файлов из A в B работает нормально, но я столкнулся с проблемой в следующей ситуации:
- Вначале A и B содержат одинаковый набор файлов:
file1
, file2
, file3
.
- Затем кто-то случайно удаляет
file1
и file2
из репо B и отправляет изменения. Этот человек также создает новый файл fileB
в репо B.
- Одновременно в репо А создается
file4
.
- Я запускаю скрипт, который должен синхронизировать A и B. Из ветки в B я запускаю:
git merge <branch in A> -X theirs
. После объединения B содержит только файлы file3
, file4
и fileB
, удаленные файлы больше не добавляются в B.
Я ищу способ снова загрузить все файлы из A в B в случае их удаления в B. Конфликты слияния возникают, только если я изменяю файлы в A, тогда я могу просто запустить
git checkout <branch in B>
git merge <branch in A> -X theirs // <- merge conflict
git add -A
git commit -m 'resolve conflict'
git push
В этом случае удаленные файлы file1
и file2
возвращаются в B. Есть ли способ добавить их обратно в B без их изменения и без принудительного перемещения из A в B (что приведет к удалению новых файлов в B)?