Когда вы разветвляете чей-то репозиторий на GitHub, вы захотите обновить свой форк с любыми изменениями, внесенными в оригинал. Есть разные способы сделать это. В этом кратком совете Shaumik описывает, как обновить ваш форк через командную строку. Другой вариант — обновить ваш форк через веб-интерфейс GitHub .
Git — это распределенная система контроля версий, что означает, что каждая копия репозитория имеет свою историю. GitHub, с другой стороны, представляет собой онлайн-коллекцию репозиториев Git. GitHub представляет концепцию разветвления, которая включает создание копии основного хранилища.
GitHub рабочий процесс
Чтобы понять концепцию обновления форка, нужно сначала знать, почему это необходимо.
Организация не может предоставить каждому потенциальному участнику доступ для записи в свой основной репозиторий, поэтому публика может просматривать только центральный репозиторий. Вилка — это копия этого репозитория, которую может создать пользователь. Пользователи имеют доступ для чтения и записи к своим собственным вилкам.
Обычно программирование происходит на локальной машине (или виртуальной машине) вместо интерфейса GitHub напрямую, поэтому обычно создается клон ветки.
После того, как участник внес коммит в локальную копию, его необходимо отправить на развилку на GitHub (что возможно благодаря доступу на запись). Затем создается запрос на извлечение данных из вилки в центральное хранилище.
Поддержание вашей вилки в актуальном состоянии
Когда центральный репозиторий обновляется чужим кодом (после создания форка), эти новые коммиты волшебным образом не появляются на вилке. Сначала необходимо загрузить и объединить эти изменения с локальным хранилищем, а затем отправить его на развилку.
По унаследованным причинам в нашем локальном репозитории мы называем удаленный центральный репозиторий upstream
origin
В идеале, вы никогда не должны делать никаких коммитов непосредственно в master
Эта ветвь должна использоваться только для хранения обновленного кода от upstream
Все изменения должны быть внесены в новую функцию или ветки ошибок и помещены в ветки с тем же именем на ветке.
Следовательно, следующие шаги помогают обновить ветвь последними коммитами из центрального репозитория:
- Извлечь из
upstream
master
master
- Переход от
master
master
Эти шаги предполагают, что вы разветвили репозиторий и клонировали ветвь на локальном компьютере.
Для демонстрации мы будем использовать репозиторий e-Cidadania на GitHub .
Шаг 1: Разветвить репозиторий
Чтобы раскошелиться на репозиторий, вам нужно нажать на кнопку форка (верхняя правая часть скриншота).
Домашняя страница e-Cidadania на GitHub
Шаг 2: клонируем ваш раскрученный репозиторий
Чтобы клонировать ваш форк, вам сначала нужно выбрать протокол из выпадающего списка (как показано на скриншоте ниже) и скопировать ссылку. Мы выберем протокол SSH в этой демонстрации:
вилка e-Cidadania в вашем профиле
Откройте терминал и выполните следующую команду:
git clone [email protected]:sdaityari/e-cidadania.git
Шаг 3: Ссылка на Центральный репозиторий
Затем вам нужно связать ваш локальный репозиторий с центральным репозиторием, чтобы иметь возможность извлекать изменения из центрального репозитория. Это делается путем добавления восходящего пульта. Сначала скопируйте ссылку SSH из центрального репозитория и добавьте удаленный, выполнив следующую команду:
git remote add upstream [email protected]:cidadania/e-cidadania.git
Чтобы убедиться, что пульт был добавлен, проверьте список пультов, выполнив следующую команду:
git remote -v
Вывод должен быть следующим:
origin [email protected]:sdaityari/e-cidadania.git (fetch)
origin [email protected]:sdaityari/e-cidadania.git (push)
upstream [email protected]:cidadania/e-cidadania.git (fetch)
upstream [email protected]:cidadania/e-cidadania.git (push)
Шаг 4: Извлечь изменения из upstream
Когда в master
На скриншоте вы можете увидеть сообщение, в котором говорится, что эта ветвь имеет 36 коммитов за cidadania: master
:
Страница Форка на GitHub
Чтобы перенести эти изменения в локальный репозиторий, выполните следующую команду:
git pull upstream master
Эта команда обновляет вашу master
upstream
Шаг 5: Нажмите Изменения к origin
Чтобы отправить эти обновления из центрального репозитория на ветвь, просто выполните следующее:
git push origin master
Counting objects: 739, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (381/381), done.
Writing objects: 100% (739/739), 219.66 KiB | 0 bytes/s, done.
Total 739 (delta 408), reused 602 (delta 278)
To [email protected]:sdaityari/e-cidadania.git
da546f3..2fc7f31 master -> master
Чтобы подтвердить, что изменения были обновлены, снова посетите страницу форка на GitHub!
Обновленная страница Форка на GitHub
Сообщение Эта ветвь даже с cidadania: master
показывает, что коммиты были добавлены в master