Избегайте слияния файлов, которые имеют изменения в обеих ветках - PullRequest
0 голосов
/ 14 января 2019

Контекст: я пытаюсь заставить git вести себя как какой-то другой инструмент управления исходным кодом, пытаясь убедить их использовать только git. Тем временем мне нужно запустить git как раба, делая все то же самое, что и scm в действии.

Как заставить git использовать стратегию -X theirs на уровне файлов вместо уровня ханка?

В принципе, если у меня есть два фрагмента из двух веток в одном файле, git способен объединить те, что включают оба. Но вместо этого я хочу перезаписать весь файл mybranch файлом theirbranch.

EDIT:

То же самое можно сделать наоборот, объединить со стратегией -X ours на уровне файлов и перезаписать изменения на theirbranch, если в том же файле есть изменения на mybranch.

1 Ответ

0 голосов
/ 14 января 2019

Согласно Разрешить конфликты слияния Git в пользу их изменений во время вытягивания , если вы хотите выполнить слияние с их изменениями, вы можете использовать git merge -X theirs. Это, однако, не может быть применено на файловой основе.

Если вы хотите отменить «наши» изменения и использовать «их» версию файла, вы можете просто выполнить проверку:

git checkout <their revision or branch> -- <path to file>

Или, как указано в в этом ответе , есть также опция --theirs в состоянии конфликта:

git checkout --theirs <path>

Только не забудьте git add и git commit после разрешения конфликтов.


Если вам нужен список файлов с различиями в двух ветвях (два произвольных коммита):

git diff <branch 1> <branch 2> --name-only
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...