Объединить определенный файл из другой ветки / каталога - PullRequest
1 голос
/ 02 апреля 2019

У меня есть две ветви GIT: A с Pluto / test.txt B с Pippo / test.txt

Я хочу объединить только файл (test.txt) в ветви B в A.

Я пытался использовать:

git checkout A
git checkout B Pippo/test.txt

, но при этом создается папка с файлом в нем, например: A с Pluto / test.txt и Pippo / test.txt.Однако я хотел бы получить слияние файлов

Ответы [ 2 ]

2 голосов
/ 02 апреля 2019

Попробуйте git merge-file. Он объединяет два файла в трехстороннем объединении.

git merge-file <current-file> <base-file> <other-file>

В вашем случае current-file - это A's Pluto/test.txt, other-file - это B's Pippo/test.txt. Что касается base-file, вы можете узнать, какой коммит А впервые ввел Pluto/test.txt, по git log A --reverse -- Pluto/test.txt. Первый коммит в выводе - это то, что мы хотим, и предположим, что это abc123.

Извлеките ветку A, чтобы у нас было current-file.

git checkout A

Получить base-file.

git cat-file -p abc123:Pluto/test.txt > base.txt

Получить other-file.

git cat-file -p B:Pippo/test.txt > other.txt

Запустите трехстороннее объединение файлов.

git merge-file Pluto/test.txt base.txt other.txt

Открыть Pluto/test.txt. Если есть какие-либо конфликты, разрешите их. Сохранить и выйти. Добавьте и передайте изменения.

git add Pluto/test.txt
git commit

Очистить base.txt и other.txt.

rm base.txt other.txt
1 голос
/ 02 апреля 2019

git не будет объединять файлы с другим путем.

Объединение файлов может произойти, если оба файла находятся на одном и том же пути, но различаются в ваших ветвях.

Однако, даже если бы у вас было, скажем, Pluto/test.txt в каждой ветви, объединение B в A не обязательно приведет к объединению.Было бы только , если бы они оба отличались от их базы слияния в одних и тех же местах (куски кода).

Возможно, стоит рассмотреть возможность слияния вручную с помощью любого инструмента слияния,затем внесение этих изменений в нужную ветку?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...