Skip to content

Commit

Permalink
Merge pull request #318 from Morganov/06-update-repo
Browse files Browse the repository at this point in the history
Добавлен недостающий перевод главы
  • Loading branch information
Morganov authored Aug 8, 2020
2 parents e195688 + 8b58ec9 commit e4ba817
Showing 1 changed file with 68 additions and 6 deletions.
74 changes: 68 additions & 6 deletions book/06-github/sections/2-contributing.asc
Original file line number Diff line number Diff line change
Expand Up @@ -36,12 +36,14 @@ GitHub разработан с прицелом на определённый р

Вот как это обычно работает:

1. Создайте тематическую ветку от ветки `master`.
2. Зафиксируйте несколько изменений, улучшающих проект.
3. Отправьте эту ветку на GitHub.
4. Откройте запрос на слияние на GitHub.
5. Обсуждайте его, вносите изменения, если нужно.
6. Владелец проекта принимает решение о принятии изменений, либо об их отклонении.
1. Создайте форк проекта.
2. Создайте тематическую ветку на основании ветки `master`.
3. Создайте один или несколько коммитов с изменениями, улучшающих проект.
4. Отправьте эту ветку в ваш проект на GitHub.
5. Откройте запрос на слияние на GitHub.
6. Обсуждайте его, вносите изменения, если нужно.
7. Владелец проекта принимает решение о принятии изменений, либо об их отклонении.
8. Получите обновлённую ветку `master` и отправьте её в свой форк.

Очень напоминает подход, описанный в главе <<ch05-distributed-git#r_integration_manager>>, но вместо использования электронной почты, команда сотрудничает через веб-интерфейс.

Expand Down Expand Up @@ -477,3 +479,63 @@ image::images/markdown-08-drag-drop.png[Перетаскивание карти

Если вернуться немного назад к <<r_pr_references>>, то над областью редактирования вы увидите небольшую подсказку ``Parsed as Markdown''.
Нажав не неё, вы получите полную подсказку по использованию GitHub разметки.

[[r_fetch_and_push_on_different_repositories]]
==== Поддержание GitHub репозитория в актуальном состоянии

После создания форка, ваш репозиторий будет существаовать независимо от оригинального репозитория.
В частности, при появлении в оригинальном репозитории новых коммитов GitHub информирует вас при помощи сообщения:

[source,text]
----
This branch is 5 commits behind progit:master.
----

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

Первый способ не требует конфигурации.
Например, если вы сделали форк репозитория `https://github.com/progit/progit2.git`, то обновить ветку `master` можно следующим образом:

[source,console]
----
$ git checkout master <1>
$ git pull https://github.com/progit/progit2.git <2>
$ git push origin master <3>
----

<1> Если вы находитесь на другой ветке -- перейти на `master`.
<2> Получить изменения из репозитория `https://github.com/progit/progit2.git` и слить их с веткой `master`.
<3> Отправить локальную ветку `master` в ваш форк `origin`.

Каждый раз писать URL репозитория для получения изменений достаточно утомительно.
Этот процесс можно автоматизировать за счёт указания следующей конфигурации:

[source,console]
----
$ git remote add progit https://github.com/progit/progit2.git <1>
$ git branch --set-upstream-to=progit/master master <2>
$ git config --local remote.pushDefault origin <3>
----

<1> Добавить исходный репозиторий как удалённый с другим именем.
Здесь выбрано имя `progit`.
<2> Настроить локальную ветку `master` на получение изменений из удалённого репозитория `progit`.
<3> Установить `origin` как репозиторий по умолчанию для отправки.

После этого, процесс обновления становится гораздо проще:

[source,console]
----
$ git checkout master <1>
$ git pull <2>
$ git push <3>
----

<1> Если вы находитесь на другой ветке -- перейти на `master`.
<2> Получить изменения из `progit` и слить их с веткой `master`.
<3> Отправить локальную ветку `master` в ваш форк `origin`.

Данный подход не лишён недостатков.
Git будет молча выполнять указанные действия и не предупредит вас в случае, когда вы добавили коммит в `master`, получили изменения из `progit` и отправили всё вместе в `origin` -- все эти операции абсолютно корректны.
Поэтому вам стоит исключить прямое добавление коммитов в ветку `master`, поскольку эта ветка фактически принадлежит другому репозиторию.

0 comments on commit e4ba817

Please sign in to comment.