Поиск по сайту:

Как правильно разветвить репозиторий Github


Программирование с открытым исходным кодом — это возможность вносить свои собственные изменения в код, написанный другими. Для этого вы должны отделиться от основного репозитория, что обычно называется «разветвлением» репозитория, но это может быть сложно, если вы не сделаете это должным образом.

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

Разветвление с Github

Если вы используете Github, самый простой способ разветвить репозиторий — нажать кнопку «Разветвить», которая автоматически создаст новый репозиторий в вашей учетной записи и настроит пульты при его клонировании. Это также заставит его отображаться на вкладке «форки» исходного репозитория и будет отображаться в вашем репо как «разветвленный из X».

Если вы не хотите, чтобы это отображалось, или не используете Github, вам нужно будет клонировать вручную.

Если вы клонируете его самостоятельно, убедитесь, что вы правильно клонируете репозиторий, а не выполняете «Загрузить ZIP». Если вы не клонируете его через Git, он не будет копировать историю версий и не будет настроен как репозиторий Git.

Настройка восходящего удаленного форка

Если вы разветвили репозиторий с веб-сайта Github, удаленный origin укажет на вашу вилку. Однако также полезно иметь возможность извлекать данные из исходного репозитория, называемого «восходящим потоком». Если они вносят изменения, вы, вероятно, захотите выполнить слияние или перебазирование с вышестоящим пультом.

В Github есть встроенные инструменты для автоматического выполнения этого, поэтому вам не нужно выполнять эту часть, но если вы хотите использовать инструменты CLI, вам нужно будет добавить обратно исходный репозиторий в качестве удаленного под названием «upstream“:

git remote add upstream https://github.com/author/original.git

Разветвление из Git CLI

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

Если вы хотите интегрировать новые изменения из исходного кода, вам все равно понадобится удаленный источник, но он не должен быть исходным удаленным по умолчанию. Итак, вы захотите переименовать удаленный по умолчанию «origin» в «upstream».

git remote rename origin upstream

А затем добавьте свой собственный пульт в качестве нового «origin», который вам, вероятно, потребуется сделать вручную, если вы планируете отправить его обратно на Github:

git remote add origin https://github.com/author/ForkName

Как только это будет сделано, вам, вероятно, потребуется установить пульт по умолчанию для каждой ветки на ваш форк:

git branch --set-upstream-to origin

И нажмите на источник, который загрузит файлы в ваш новый репозиторий.

Обновление с новыми изменениями

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

Если вы хотите сделать это через Git CLI, есть лучший способ. Перебазирование похоже на слияние, но сохраняет плоскую иерархию коммитов и не приводит к ненужным коммитам слияния. В большинстве случаев вы захотите перебазировать при интеграции изменений вышестоящего уровня, но это зависит от вас. Слияние также является правильной стратегией, особенно если вы не очень часто сливаетесь.

Чтобы интегрировать изменения, вам потребуется получить удаленный upstream, извлечь ветку master и выполнить перебазирование в upstream/master.

git fetch upstream

git checkout master

git rebase upstream/master

После этого вам может понадобиться принудительно нажать, если это первый раз:

git push -f origin master

Создание запросов на слияние

Если вы разветвились с Github, это также легко. Вы можете просто нажать «Contribute», и он автоматически откроет запрос на вытягивание.

Если нет, процесс по-прежнему прост. Перейдите в вышестоящий репозиторий и на вкладке «Запросы на вытягивание» выберите «Новый запрос на вытягивание».

Затем вам нужно будет выбрать «сравнить вилки» и найти свой репозиторий вилок. Выберите ветки, которые вы хотите объединить, и нажмите «Создать запрос на включение».

Вы можете продолжить работу над своей вилкой и объединять запросы на включение по мере необходимости. Если вы делаете это часто, вы можете рассмотреть возможность создания собственных веток локально для своих функций, а затем слияния с целевой восходящей веткой, когда вы хотите сделать PR. Это может помочь сохранить PR по теме и сосредоточиться на одной функциональной ветке за раз.