Недавно я участвовал в проекте от GitHub. Я сделал следующее:
Разветвил исходный репозиторий, клонировал его на мою локальную машину, создал ветку для исправления существующей ошибки, исправил ошибку в этой ветке, отправил эту ветку в мое репо, отправил запрос на перенос автору репозитория, чтобы объединить мою исправленную ветку с его главная ветвь.
Это был мой первый раз, когда я использовал чужой код, поэтому не знаю, что делать. Теперь мой запрос на перенос был объединен автором с исходным репо / проектом.
Что я должен делать дальше? Стоит ли удалять ветку? Слить ветку? Что-нибудь еще?
Дополнительная информация:
Исходный проект имеет единственную ветку.
У меня также есть апстрим, чтобы получать последние обновления из исходного репо. (У меня так получилось) :
git remote add upstream https://path/to/original/repo.git
И я получаю такие обновления:
git fetch upstream
:)
Ответы:
Что делать дальше: продолжать добавлять новые функции или исправлять другие ошибки в их собственных выделенных ветках (помещенных только в вашу вилку).
Это означает, что ваша вилка остается, но ветви внутри вашей вилки могут приходить и уходить.
Вы также можете удалить вилку, если не планируете вносить дальнейший вклад, но она удалит соответствующую запись в «Репозитории, в которые вы вносите вклад» .
Легче:
fix
ветку (фактически, теперь она удалена для вас ) на вилке (и в локальном клонированном репозитории: см. « Удаление ветки Git как локально, так и удаленно »)git pull upstream master
(если этоmaster
была ветка, в которую было интегрировано ваше исправление: слияние будет происходить с перемоткой вперед): на этом этапе перебазирование не требуется.master
(теперь с последним отupstream master
).Однако никогда не забывайте один шаг перед отправкой любого будущего запроса на перенос:
сначала переустановите текущую ветку (
fix
) из ветки назначения восходящего потока(
upstream
это исходное репо, которое вы разветвили: см. «В чем разница между origin и upstream в github »)Прежде чем отправлять что-либо обратно в исходное репо («восходящий поток»), вам необходимо убедиться, что ваша работа основана на последнем из указанного исходного репо (или запрос на вытягивание не приведет к слиянию с ускоренной перемоткой после применения обратно на
upstream
репо).См., Например, « Рабочий процесс для управления запросами на вытягивание в общих репозиториях в github ».
Другими словами, он
upstream
может развиваться (добавлять новые коммиты), пока вы заняты исправлением вещей. Вам нужно воспроизвести свои исправления поверх последней работы из апстрима, чтобы убедиться, что ваши коммиты по-прежнему совместимы с последней версиейupstream
.OP Сантош Кумар спрашивает в комментариях :
Если вы не вносили никаких новых исправлений с момента последнего запроса на перенос, см. Выше (удалите и воссоздайте новую ветку
fix
поверх обновленногоmaster
).Если вы выполнили еще какую-либо работу с момента вашего запроса на перенос, я бы не стал
upstream
выполнять слияние, если я хочу создать новый запрос на перенос :Таким образом, вся моя новая локальная работа воспроизводится поверх самых последних
upstream
master
коммитов (полученных в моем локальном репо), предполагая, чтоmaster
это целевая ветка, которая будет интегрировать мой будущий запрос на перенос.Затем я могу перенести свою локальную работу на '
origin
', который является моей вилкой на GitHubupstream
.И из моей вилки на GitHub я могу безопасно сделать запрос на перенос, зная, что он будет добавлять только новые коммиты
upstream
без необходимости какого-либо разрешения слияния: слияние этих новых коммитов вupstream
репо будет означать простое слияние с быстрой перемоткой вперед.A
git pull --rebase
без указания ветки, поверх которой вы хотите перебазировать свою (в настоящее время проверенную)fix
ветку, не будет работать:Да, вы можете указать ветвь, которая будет, например, целью запроса на вытягивание '
master
'.Это не удалит вашу
fix
ветку, но воспроизведет ее поверх восходящего потока,master
полученного в вашем репо.источник
You asked to pull from the remote 'upstream', but did not specify a branch.
я долженmaster
наконец добавить ? И что это будет делать? Удалит ли моя ветка с исправлениями ?Во-первых, поздравляю с вашим первым вкладом в проект на Github.
Обычный рабочий процесс Github - это создание новой ветки для каждой решаемой проблемы. Таким образом, сопровождающий основного репозитория может решить, какое из ваших решений объединить, а какое отклонить. После того, как ветка была объединена с восходящим потоком, ветка больше не нужна и обычно может быть удалена.
источник