Извлеките изменения из вилки Github

Кто-то разветвил мой проект Github и внес некоторые изменения. Как я могу объединить изменения с моей исходной версией?

Кроме того, можно ли выполнить только конкретный коммит?

Я ищу, есть ли способ вытащить конкретный коммит вместо всей ветки.


person gregghz    schedule 03.01.2011    source источник
comment
Дубликат: stackoverflow.com/questions/867831/   -  person jweyrich    schedule 03.01.2011
comment
Это просит втягиваться в вилку, а не в восходящий поток (хотя, вероятно, это тот же метод?). Мне также любопытно узнать, есть ли способ вытащить конкретный коммит вместо всей ветки.   -  person gregghz    schedule 03.01.2011
comment
правильно, то же самое и с обратным. О, правда, на конкретную часть фиксации правильно отвечает @Dustin.   -  person jweyrich    schedule 03.01.2011


Ответы (3)


Взятие одной фиксации было бы вишневым выбором и переписало бы идентификатор фиксации (и пометил бы вас как коммиттера, сохранив автора). Однако процесс довольно прост:

git fetch git://github.com/user/project.git
git cherry-pick <SHA-COMMIT-ID>

Вы получаете SHA из журнала репозитория, например:

git log --oneline

b019cc0 Check whether we have <linux/compiler.h>.
0920898 Include <linux/compiler.h> before including <linux/usbdevice_fs.h>.
cbf0ba1 Add DLT_DBUS, for raw D-Bus messages.
77ed5cd Libnl 2.x returns its own error codes, not errnos; handle that.

С git cherry-pick 0920898 вы переносите соответствующий коммит в свою текущую ветку.

person Dustin    schedule 03.01.2011
comment
что за фиксация-к-вишня-выбор? Я не знаю, что там ... это URL-адрес или какой-то другой идентификатор? - person gregghz; 03.01.2011
comment
неважно, я понял, что это хеш коммита. Спасибо! - person gregghz; 03.01.2011
comment
хэш коммита или любой другой способ ссылки на него, например, HEAD ~ 2, если это было два коммита назад от того места, где сейчас находится HEAD. - person MatrixFrog; 06.01.2011
comment
Возможно, вам потребуется указать имя ветки вилки: git fetch git://github.com/user/project.git branchname - person rmtheis; 14.06.2015

Есть замечательный инструмент, который называется hub, который предоставляет полезные инструменты для очистки запросов на вытягивание и в целом " поможет тебе выиграть в git ".

Одна полезная команда в этом контексте:

git am -3 <url>

Это позволяет вам получать изменения с URL-адреса и применять его коммиты / изменения к вашему текущему локальному git, даже не извлекая удаленный репозиторий (что очень удобно с большими репозиториями).

Если вы используете эту команду с веб-страницей git коммита, который хотите захватить, вы получите этот коммит в своем git. Еще более полезно: автор коммита сохраняется и не заменяется вами (как если бы вы использовали git rebase). Если вы отправите это в свое репо, изменения будут зафиксированы вами, но автором оригинального автора.

Очень хороший ресурс по этой теме - this гид Натаниэля Тэлботта. Он показывает отличный рабочий процесс для работы с пул-реквестами вместо того, чтобы полагаться на «вредоносную» кнопку пул-реквеста на слияние на github.

person Mr. Anderson    schedule 16.08.2018

Попробуйте использовать / forkqueue на github. Там вы можете объединить коммиты в свою вилку.

Или перейдите на вкладку «Сеть» и выберите «Forkqueue»

person frank_neff    schedule 19.11.2011
comment
С тех пор очередь вилок была удалена. github.com/blog/1091-spring-cleaning - person Juha Palomäki; 19.08.2012