мерзавец частичная тяга - PullRequest
12 голосов
/ 06 июня 2010

Я поддерживаю хранилище A .

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

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

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

Ответы [ 3 ]

8 голосов
/ 06 июня 2010

Принеси оттуда голову и вишню.

git remote add jessica git://jessica.com/repo.git
git fetch jessica master
git cherry-pick 235a5
...
2 голосов
/ 06 июня 2010

вы могли бы сделать:

git checkout <remote_branch> <paths>

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

или попробуйте:

git pull --squash

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

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

1 голос
/ 06 июня 2010

Короткий ответ: вы не можете «частично тянуть» с помощью git.

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

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

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