Как я могу разрешить конфликты слияния git, сохранив мою версию файлов, которые я изменил? - PullRequest
1 голос
/ 01 августа 2020

У меня есть две Git ветки, mybranch (проверено) и theirbranch. Я хотел бы объединить theirbranch с mybranch, разрешая конфликты, сохраняя мою версию файла, если я его изменил (т.е. он изменился на mybranch с момента последнего общего предка), и их версию файла, если У меня нет.

Как я могу сделать это в Git?

Две вещи, которые не работают:

  • git merge -s ours: это сохраняет моя копия всех файлов, даже если я их не менял.
  • git merge -Xours: это сохраняет неконфликтующие фрагменты из theirbranch в файлах, которые я изменил; Я хочу игнорировать все фрагменты из theirbranch в файлах, которые я изменил.

1 Ответ

1 голос
/ 01 августа 2020

Вот одно из решений (предполагает использование оболочки, подобной Bash):

git merge theirbranch
git diff --name-only "$(git merge-base theirbranch HEAD)"..HEAD \
| xargs git checkout HEAD
git commit

Было бы здорово, если бы кто-то мог предложить что-то более короткое!

...