Подтвердить что ты не робот

Git частичное вытягивание

Я поддерживаю репозиторий A.

Другой вкладчик клонировал A в другой репозиторий B.

Позднее другой участник добавил файлы F, что не имеет для меня значения, в B.

Теперь я хочу объединить изменения B с A, но без фиксации F. Как это сделать?

4b9b3361

Ответ 1

Извлеките голову и вишневый отбор.

git remote add jessica git://jessica.com/repo.git
git fetch jessica master
git cherry-pick 235a5
...

Ответ 2

вы можете сделать:

git checkout <remote_branch> <paths>

где <paths> - файлы, которые вы действительно хотите. это проще всего, если файлы, которые вы хотите, находятся в отдельных каталогах для файлов, которые у вас нет, поскольку вы можете использовать подстановочные знаки.

попробуйте:

git pull --squash

это может быть немного ручным, так как вам нужно идти и удалять файлы, которые вы не хотите, прежде чем совершать, но это также единственный способ сделать это, если файлы, которые вы не хотите, были добавлены как часть той же фиксации, которая изменила нужные файлы.

(довольно большой) недостаток заключается в том, что вы теряете историю фиксации удаленной ветки.

Ответ 3

Короткий ответ заключается в том, что вы не можете "частично вытянуть" с помощью git.

Однако вы можете вывести изменения из B, а затем использовать git -rebase (1) или git -filter-branch (1), чтобы изменить фиксацию (ы), содержащую F , прежде чем нажимать на A. Имейте в виду, что это изменит (относительно B) хэши коммитов (ов), которые вы измените, поэтому попытки слияния в будущем B будут менее интеллектуальными, чем обычно.

Взгляните на глава Pro Git по истории перезаписи.