Руководство для разработчика по работе с git
Любой разработчик может вносить изменения в репозиторий, поэтому нам необходимы правила, которые:
- помогут ориентироваться в исправлениях в ветках
- позволят узнать, кто является ответственным за исправления.
Соглашения
Для исключения неоднозначных толкований необходимо определиться с условными обозначениями, которые далее будут применяться в этом руководстве.
${src_dir}:
Каталог, в котором находятся исходные тексты Midnight Commander. В этом каталоге должен присутствовать подкаталог .git
Расположение этого каталога в файловой системе может быть в любом месте, которое вам понравится. Это может быть /home/<yournick>/src/mc; /usr/src/mc или любой другой.
Получение репозитория
Прежде всего, необходимо получить копию репозитория:
$ git clone ssh://midnight-commander.org:22/git/mc.git
Персональная настройка git
Перед началом работы необходимо указать вашему git некоторые данные о себе:
cd ${src_dir} git config 'user.name' 'ваше имя' git config 'user.email' 'ваш e-mail'
Обязательно укажите эти данные. Не стесняйтесь указать реальный e-mail адрес - он необходим для связи с вами при решении вопросов, связанных с ревизиями.
После выполнения этих команд ваша персональная информация будет занесена в файл ${src_dir}/.git/config. Это означает, что ваши персональные данные будут использоваться при работе только с этим репозиторием. Чтобы ваше имя и ваш e-mail использовались при работе с любым репозиторием, выполните команды:
git config --global 'user.name' 'ваше имя' git config --global 'user.email' 'ваш e-mail'
В этом случа изменения сохранятся в файле ~/.gitconfig
Работа с git
Сейчас вы готовы продолжить работу с репозиторием. Далее будут описаны типичные сценарии работы с репозиторием.
Выполнение операции "просмотр тикета с веткой"
На странице списка тикетов, которые необходимо пересмотреть, выбирайте любой тикет. Статус тикета 'accepted' (принят) обозначает, что у тикета существует ветка, название которой начинается с номера тикета. например, вы выбрали тикет 'XXX. Some my thoughts'; статус тикета 'accepted'. Представим, что XXX - это какой-то номер.
Выполните команду:
git remote prune origin
чтобы обновить список веток которые возможно уже приняты в основной ствол и удалены на сервере. Далее выполните:
git branch -r
Вы увидите список веток, которые присутствуют в родительском git. Одна из веток будет называться, например: 'origin/XXX_some_my_thoughts':
origin/10_fish_stalls_on_symlink origin/125-allocate-and-free-memory-via-wrapper origin/135_drop_bundled_libintl origin/140_move_docs_and_contrib origin/145_update_m4_files origin/147_escaping origin/148_fancy_tab_handling origin/155_remove_WANT_WIDGETS origin/155_want_widgets_METUX origin/158_message_codes origin/161_drop_bundled_slang origin/162_syntax_namerle origin/166_syntax_minor_fixes origin/167_locale_german origin/XXX_some_my_thinks origin/174_4.6_mandriva_pty_closeonexec origin/199_slang_1x origin/200_drop_ncurses origin/204_mkdir_autofills_name origin/50_history_section_names origin/HACK_autoconf origin/HACK_install_dirs origin/HACK_memory_management origin/HACK_mvfs origin/HEAD origin/master origin/mc-4.6 origin/mc-ru-fork origin/utf-8
Теперь убедитесь, что у вас нет локальной ветки с таким же названием. Выполните команду:
git branch
Эта команда покажет список ваших локальных веток. Например:
* master
Звездочка перед названием обозначает, что ветка является текущей. Если в этом списке нет 'XXX_some_my_thinks', то вам нужно выполнить следующую команду:
git checkout -b XXX_some_my_thoughts origin/XXX_some_my_thoughts
После успешного завершения команды вы увидите следующее:
Branch XXX_some_my_thoughts set up to track remote branch refs/remotes/origin/XXX_some_my_thoughts. Switched to a new branch "XXX_some_my_thoughts"
ВНИМАНИЕ: При выполнении этой команды git может выдать помощь по использованию команды git-checkout. Это означает, что вам не помешало бы обновить ваш git до более новой версии.
Вы теперь создали новую локальную ветку на основе ветки из родительского репозитория.
ПРИМЕЧАНИЕ: Если локальная ветка ранее уже была создана, то просто переключитесь на неё командой:
git checkout XXX_some_my_thoughts
Можно также проверить, является ли ветка 'XXX_some_my_thoughts' текущей. Выполните команду:
git-branch
Вы теперь увидите следующее:
master * XXX_some_my_thoughts
Звездочка перед названием ветки, как уже было сказано, обозначает текущую ветку.
Теперь вы можете протестировать изменения или исправления, внесенные в эту ветку (и описанные в связанном тикете).
Дополнительные материалы
Басня о Git расскажет о создании системы, похожей на Git, с нуля.