Кто-то разветвил мой проект Github и внес некоторые изменения. Как я могу объединить изменения с моей исходной версией?
Кроме того, можно ли выполнить только конкретный коммит?
Я ищу, есть ли способ вытащить конкретный коммит вместо всей ветки.
Кто-то разветвил мой проект Github и внес некоторые изменения. Как я могу объединить изменения с моей исходной версией?
Кроме того, можно ли выполнить только конкретный коммит?
Я ищу, есть ли способ вытащить конкретный коммит вместо всей ветки.
Взятие одной фиксации было бы вишневым выбором и переписало бы идентификатор фиксации (и пометил бы вас как коммиттера, сохранив автора). Однако процесс довольно прост:
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
вы переносите соответствующий коммит в свою текущую ветку.
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.
Попробуйте использовать / forkqueue на github. Там вы можете объединить коммиты в свою вилку.
Или перейдите на вкладку «Сеть» и выберите «Forkqueue»