Работа со своим репозиторием заданий#

В данной главе описывается, как создать свой репозиторий с копией файлов заданий.

Предупреждение

Если вы учитесь на курсе «Python для сетевых инженеров», эту часть НЕ надо выполнять. На курсе инструктор создает отдельный приватный репозиторий каждому слушателю. Все инструкции для курса по работе с git/github находятся на сайте курса.

Создание репозитория на GitHub#

Для создания своего репозитория на основе шаблона нужно:

  • залогиниться на GitHub

  • открыть репозиторий с заданиями

  • нажать «Use this template» и создать новый репозиторий на основе этого шаблона

  • в открывшемся окне надо ввести название репозитория

  • после этого готов новый репозиторий с копией всех файлов из исходного репозитория с заданиями

https://raw.githubusercontent.com/natenka/PyNEng/master/images/git/github_use_template.png

Клонирование репозитория с GitHub#

Для локальной работы с репозиторием его нужно клонировать.

Для этого используется команда git clone:

$ git clone ssh://git@github.com/natenka/my_pyneng_tasks.git
Cloning into 'my_pyneng_tasks'...
remote: Counting objects: 241, done.
remote: Compressing objects: 100% (191/191), done.
remote: Total 241 (delta 43), reused 239 (delta 41), pack-reused 0
Receiving objects: 100% (241/241), 119.60 KiB | 0 bytes/s, done.
Resolving deltas: 100% (43/43), done.
Checking connectivity... done.

По сравнению с приведённой в этом листинге командой, вам нужно изменить:

  • имя пользователя natenka на имя своего пользователя на GitHub;

  • имя репозитория my_pyneng_tasks на имя своего репозитория на GitHub.

В итоге, в текущем каталоге, в котором была выполнена команда git clone, появится каталог с именем репозитория, в моём случае – «my_pyneng_tasks». В этом каталоге теперь находится содержимое репозитория на GitHub.

Работа с репозиторием#

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

  • создан каталог .git

  • скачаны все данные репозитория

  • скачаны все изменения, которые были в репозитории

  • репозиторий на GitHub настроен как remote для локального репозитория

Теперь готов полноценный локальный репозиторий Git, в котором вы можете работать. Обычно последовательность работы будет такой:

  • перед началом работы, синхронизация локального содержимого с GitHub командой git pull

  • изменение файлов репозитория

  • добавление изменённых файлов в staging командой git add

  • фиксация изменений через коммит командой git commit

  • передача локальных изменений в репозитории на GitHub командой git push

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

  • первый шаг – обновление локального репозитория

  • последний шаг – загрузка изменений на GitHub

Синхронизация локального репозитория с удалённым#

Все команды выполняются внутри каталога репозитория (в примере выше - my_pyneng_tasks).

Если содержимое локального репозитория одинаково с удалённым, вывод будет таким:

$ git pull
Already up-to-date.

Если были изменения, вывод будет примерно таким:

$ git pull
remote: Counting objects: 5, done.
remote: Compressing objects: 100% (1/1), done.
remote: Total 5 (delta 4), reused 5 (delta 4), pack-reused 0
Unpacking objects: 100% (5/5), done.
From ssh://github.com/natenka/my_pyneng_tasks
   89c04b6..fc4c721  master     -> origin/master
Updating 89c04b6..fc4c721
Fast-forward
 exercises/03_data_structures/task_3_3.py | 2 ++
 1 file changed, 2 insertions(+)

Добавление новых файлов или изменений в существующих#

Если необходимо добавить конкретный файл (в данном случае – README.md), нужно дать команду git add README.md. Добавление всех файлов текущей директории производится командой git add ..

Коммит#

При выполнении коммита обязательно надо указать сообщение. Лучше, если сообщение будет со смыслом, а не просто «update» или подобное. Коммит делается командой, подобной git commit -m "Сделаны задания 4.1-4.3".

Push на GitHub#

Для загрузки всех локальных изменений на GitHub используется команда git push:

$ git push origin master
Counting objects: 5, done.
Compressing objects: 100% (5/5), done.
Writing objects: 100% (5/5), 426 bytes | 0 bytes/s, done.
Total 5 (delta 4), reused 0 (delta 0)
remote: Resolving deltas: 100% (4/4), completed with 4 local objects.
To ssh://git@github.com/natenka/my_pyneng_tasks.git
   fc4c721..edcf417  master -> master

Перед выполнением git push можно выполнить команду git log -p origin/master.. – она покажет, какие изменения вы собираетесь добавлять в свой репозиторий на GitHub.