Как получить "свои" изменения в середине конфликта 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
Это вытащит версию файла из одной ветки в текущее дерево