Как получить "свои" изменения в середине конфликта Git rebase?

У меня конфликтующие ветки, ветвь2 разветвленная от ветки1.

Скажем, при перезагрузке branch2 в текущем branch1 при разрешении конфликтов я решаю взять некоторые (не все) из своих файлов (т.е. branch1) как есть, Как это сделать?

Я пробовал:

git checkout branch1:foo/bar.java
fatal: reference is not a tree: TS-modules-tmp:foo/bar.java

git checkout refs/heads/branch1:foo/bar.java
fatal: reference is not a tree: refs/heads/TS-modules-tmp:foo/bar.java

Ответ 1

Вы хотите использовать:

git checkout --ours foo/bar.java
git add foo/bar.java

Если вы переустановите функцию branch_x на master, во время перезагрузки ours ссылается на мастер и theirs на feature_x.

Как указано в git -rebase docs:

Обратите внимание, что слияние с rebase работает, переигрывая каждую фиксацию из рабочая ветка на вершине ветки. Из-за этого, когда происходит конфликт слияния, сторона, о которой сообщается, как наша, является настолько далекой переустановленной серии, начиная с <upstream> , и их филиал. Другими словами, стороны меняются местами.

Для более подробной информации прочитайте эту тему.

Ответ 2

Если вы хотите вытащить конкретный файл из другой ветки, просто сделайте

git checkout branch1 -- filenamefoo.txt

Это вытащит версию файла из одной ветки в текущее дерево