Статьи

Быстрый совет: синхронизируйте вилку GitHub через командную строку

Когда вы разветвляете чей-то репозиторий на GitHub, вы захотите обновить свой форк с любыми изменениями, внесенными в оригинал. Есть разные способы сделать это. В этом кратком совете Shaumik описывает, как обновить ваш форк через командную строку. Другой вариант — обновить ваш форк через веб-интерфейс GitHub .


Git — это распределенная система контроля версий, что означает, что каждая копия репозитория имеет свою историю. GitHub, с другой стороны, представляет собой онлайн-коллекцию репозиториев Git. GitHub представляет концепцию разветвления, которая включает создание копии основного хранилища.

Рабочий процесс GitHub

GitHub рабочий процесс

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

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

Обычно программирование происходит на локальной машине (или виртуальной машине) вместо интерфейса GitHub напрямую, поэтому обычно создается клон ветки.

После того, как участник внес коммит в локальную копию, его необходимо отправить на развилку на GitHub (что возможно благодаря доступу на запись). Затем создается запрос на извлечение данных из вилки в центральное хранилище.

Поддержание вашей вилки в актуальном состоянии

Когда центральный репозиторий обновляется чужим кодом (после создания форка), эти новые коммиты волшебным образом не появляются на вилке. Сначала необходимо загрузить и объединить эти изменения с локальным хранилищем, а затем отправить его на развилку.

По унаследованным причинам в нашем локальном репозитории мы называем удаленный центральный репозиторий upstreamorigin

В идеале, вы никогда не должны делать никаких коммитов непосредственно в master Эта ветвь должна использоваться только для хранения обновленного кода от upstream Все изменения должны быть внесены в новую функцию или ветки ошибок и помещены в ветки с тем же именем на ветке.

Следовательно, следующие шаги помогают обновить ветвь последними коммитами из центрального репозитория:

  • Извлечь из upstreammastermaster
  • Переход от mastermaster

Эти шаги предполагают, что вы разветвили репозиторий и клонировали ветвь на локальном компьютере.

Для демонстрации мы будем использовать репозиторий e-Cidadania на GitHub .

Шаг 1: Разветвить репозиторий

Чтобы раскошелиться на репозиторий, вам нужно нажать на кнопку форка (верхняя правая часть скриншота).

Домашняя страница e-Cidadania на GitHub

Домашняя страница e-Cidadania на GitHub

Шаг 2: клонируем ваш раскрученный репозиторий

Чтобы клонировать ваш форк, вам сначала нужно выбрать протокол из выпадающего списка (как показано на скриншоте ниже) и скопировать ссылку. Мы выберем протокол SSH в этой демонстрации:

вилка e-Cidadania в вашем профиле

вилка e-Cidadania в вашем профиле

Откройте терминал и выполните следующую команду:

 git clone [email protected]:sdaityari/e-cidadania.git

Затем вам нужно связать ваш локальный репозиторий с центральным репозиторием, чтобы иметь возможность извлекать изменения из центрального репозитория. Это делается путем добавления восходящего пульта. Сначала скопируйте ссылку 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

Страница Форка на GitHub

Чтобы перенести эти изменения в локальный репозиторий, выполните следующую команду:

 git pull upstream master

Эта команда обновляет вашу masterupstream

Шаг 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

Обновленная страница Форка на GitHub

Сообщение Эта ветвь даже с cidadania: master показывает, что коммиты были добавлены в master