Skip to content

Commit e4ba817

Browse files
authored
Merge pull request #318 from Morganov/06-update-repo
Добавлен недостающий перевод главы
2 parents e195688 + 8b58ec9 commit e4ba817

File tree

1 file changed

+68
-6
lines changed

1 file changed

+68
-6
lines changed

book/06-github/sections/2-contributing.asc

Lines changed: 68 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -36,12 +36,14 @@ GitHub разработан с прицелом на определённый р
3636

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

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

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

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

478480
Если вернуться немного назад к <<r_pr_references>>, то над областью редактирования вы увидите небольшую подсказку ``Parsed as Markdown''.
479481
Нажав не неё, вы получите полную подсказку по использованию GitHub разметки.
482+
483+
[[r_fetch_and_push_on_different_repositories]]
484+
==== Поддержание GitHub репозитория в актуальном состоянии
485+
486+
После создания форка, ваш репозиторий будет существаовать независимо от оригинального репозитория.
487+
В частности, при появлении в оригинальном репозитории новых коммитов GitHub информирует вас при помощи сообщения:
488+
489+
[source,text]
490+
----
491+
This branch is 5 commits behind progit:master.
492+
----
493+
494+
При этом GitHub никогда не обновляет ваш репозиторий -- это вы должны делать сами.
495+
К счастью, это очень просто сделать.
496+
497+
Первый способ не требует конфигурации.
498+
Например, если вы сделали форк репозитория `https://github.com/progit/progit2.git`, то обновить ветку `master` можно следующим образом:
499+
500+
[source,console]
501+
----
502+
$ git checkout master <1>
503+
$ git pull https://github.com/progit/progit2.git <2>
504+
$ git push origin master <3>
505+
----
506+
507+
<1> Если вы находитесь на другой ветке -- перейти на `master`.
508+
<2> Получить изменения из репозитория `https://github.com/progit/progit2.git` и слить их с веткой `master`.
509+
<3> Отправить локальную ветку `master` в ваш форк `origin`.
510+
511+
Каждый раз писать URL репозитория для получения изменений достаточно утомительно.
512+
Этот процесс можно автоматизировать за счёт указания следующей конфигурации:
513+
514+
[source,console]
515+
----
516+
$ git remote add progit https://github.com/progit/progit2.git <1>
517+
$ git branch --set-upstream-to=progit/master master <2>
518+
$ git config --local remote.pushDefault origin <3>
519+
----
520+
521+
<1> Добавить исходный репозиторий как удалённый с другим именем.
522+
Здесь выбрано имя `progit`.
523+
<2> Настроить локальную ветку `master` на получение изменений из удалённого репозитория `progit`.
524+
<3> Установить `origin` как репозиторий по умолчанию для отправки.
525+
526+
После этого, процесс обновления становится гораздо проще:
527+
528+
[source,console]
529+
----
530+
$ git checkout master <1>
531+
$ git pull <2>
532+
$ git push <3>
533+
----
534+
535+
<1> Если вы находитесь на другой ветке -- перейти на `master`.
536+
<2> Получить изменения из `progit` и слить их с веткой `master`.
537+
<3> Отправить локальную ветку `master` в ваш форк `origin`.
538+
539+
Данный подход не лишён недостатков.
540+
Git будет молча выполнять указанные действия и не предупредит вас в случае, когда вы добавили коммит в `master`, получили изменения из `progit` и отправили всё вместе в `origin` -- все эти операции абсолютно корректны.
541+
Поэтому вам стоит исключить прямое добавление коммитов в ветку `master`, поскольку эта ветка фактически принадлежит другому репозиторию.

0 commit comments

Comments
 (0)