Skip to content

git_how_to

tehnotrack edited this page Feb 21, 2018 · 5 revisions

Актуальный репозиторий курса

tehnotrack/track18-spring

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

  1. Завести аккаунт на github.com
  2. Установить на свой рабочий компьютер git (https://git-scm.com/)
  3. Прочитать немного, что это такое (например, https://githowto.com/ru)

Репозиторий курса

Репозиторий курса доступен здесь https://github.com/tehnotrack/track18-spring Для начала работы, вам нужно сделать fork, нажмите соответствующую кнопку и вы получите копию нашего проекта в своем репозитории. (Читать на русском - http://zencoder.ru/git/fork-github/ на англ - https://help.github.com/articles/fork-a-repo/)

Теперь у вас есть собственный репозиторий с нашим проектам по адресу https://github.com/[your_name]/track18, дальнейшие действия проводятся с ним.

Клонируем репозиторий

Локально на компьютере создаем папку, в которой будут хранится проекты, например /Users/Dima/git В ней зовем команду (точный адрес смотрите в своем репозитории, символ $ вводить не нужно, это просто метка, что мы вводим текст в консоли)

$ git clone https://github.com/[your_name]/track18.git

Теперь у вас есть локальная копия проекта, с которой уже можно работать Введите команду

$ cd track18 (перейти в папку с проектом)
$ git status

и удостоверьтесь, что все ок.

Проверим, что локальный репозиторий связан с удаленным на гитхабе (смотри на вывод команды). Репозиторий origin - это ваш репозиторий на гитхабе.

$ git remote -v
origin  https://github.com/YOUR_USERNAME/YOUR_FORK.git (fetch)
origin  https://github.com/YOUR_USERNAME/YOUR_FORK.git (push)

Добавим связь с общекурсовым репозиторием (upstream) и проверим:

$ git remote add upstream https://github.com/tehnotrack/track18-spring.git
$ git remote -v
origin  https://github.com/YOUR_USERNAME/YOUR_FORK.git (fetch)
origin  https://github.com/YOUR_USERNAME/YOUR_FORK.git (push)
upstream  https://github.com/tehnotrack/track18-spring.git (fetch)
upstream  https://github.com/tehnotrack/track18-spring.git (push)

Синхронизация с upstream

Посколько задания выкладываются в upstream, вам нужно уметь вытягивать код оттуда. (https://help.github.com/articles/syncing-a-fork/)

$ git fetch upstream (вытягиваем изменения с upstream)
$ git checkout master (переключаемся локально на мастер)
$ git merge upstream/master (добавляем новые изменения в свой мастер, теперь у вас самый новый код, который написал ваш преподаватель)

Проверка

Создаем новый пустой файл OWNER.md и добавляем туда свои ФИО.

$ vim OWNER.md
$ git status
On branch master
Untracked files:
  (use "git add <file>..." to include in what will be committed)

	OWNER.md

nothing added to commit but untracked files present (use "git add" to track)

Добавляем в index:

$ git add OWNER.md
On branch master
Changes to be committed:
  (use "git reset HEAD <file>..." to unstage)

	new file:   OWNER.md

и комитим (сохранем состояние). С помощью ключа -m добавляем описание изменений

$ git commit -m "Added OWNER"

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

$ git push origin HEAD

Разработка в ветках

что такое ветка? разработка в ветках

Создание ветки Когда на занятии дается новая задача, нужно локально создать ветку и назвать её:

[ваш_гитхаб_аккаунт]-[название_задачи], например

мой аккаунт на гитхаб = arhangeldim, задача = authorization

Ветка - arhangeldim-authorization

Ветки с некорректными названиями не попадают на код-ревью и не оцениваются!

Локальное создание ветки (из мастер-ветки), команда создает новую ветку и переходит в неё. Не забывайте перед этим вытянуть себе upstream(!)

$ git fetch upstream
$ git checkout master
$ git merge upstream/master
$ git checkout -b [ваш_гитхаб_аккаунт]-[название_задачи] (пусть для примера ветка называется arhangeldim-authorization)

Статус нам скажет On branch arhangeldim-authorization

$ git status

Также попробуйте посмотреть команду

$ git branch

Отправка задачи

Теперь вы создали ветку, написали какой-то код и хотите его отправить на проверку. Не торопитесь! Проверьте, что выполняются тесты и код соответсвует style guide . (прошло некоторое время...) Ну что? поправили все? Можно дальше!

$ git add список_файлов
$ git commit -m "описание изменений"
$ git push origin HEAD

У меня примерно такой вывод после команды push:

   arkhangelskiy:tehnotrack-mail dmirty$ git push origin HEAD
   Counting objects: 3, done.
   Delta compression using up to 8 threads.
   Compressing objects: 100% (2/2), done.
   Writing objects: 100% (3/3), 324 bytes | 0 bytes/s, done.
   Total 3 (delta 0), reused 0 (delta 0)
   To https://github.com/arhangeldim/track16.git
      385be4a..1f66dc3  HEAD -> arhangeldim-authorization

код ревью (pull request)

Окей, ваш код на сервере, уже хорошо. Для проверки заданий мы используем ревью кода через pull-request.

Хелп

В интерфейсе github в вашем репозитории раздел branches:

alt tag

далее выбрать ветку с задачей и открыть pull-request:

alt tag

Теперь вы перешли в мой репозиторий и готовы создать реквест в основной репозиторий. Проверьте, что создаете реквест в ветку tehnotrack/track18-spring::master из своей ветки с задачей (В примере Okriw/messenger::Okriw-authorization)

alt tag

Когда реквест будет создан, то ваш код отправится на сборку автоматически. Сервис непрерывной интеграции постарается скомпилировать ваш код, проверит форматирование и запустит тесты. Если что-то не выполнится, то билд упадет, а вы увидите ошибку с описанием. Это значит, что ваш код не работает и его надо поправить. По ссылке Details вы можете узнать подробности и посмотреть ошибки.

alt tag

Исправляйте ваш код и отправляйте изменения снова, пока не пройдут все тесты. Только после этого мы проводим код-ревью.