-
Notifications
You must be signed in to change notification settings - Fork 38
git_how_to
- Завести аккаунт на github.com
- Установить на свой рабочий компьютер git (https://git-scm.com/)
- Прочитать немного, что это такое (например, 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, вам нужно уметь вытягивать код оттуда. (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.
В интерфейсе github в вашем репозитории раздел branches:
далее выбрать ветку с задачей и открыть pull-request:
Теперь вы перешли в мой репозиторий и готовы создать реквест в основной репозиторий. Проверьте, что создаете реквест в ветку tehnotrack/track18-spring::master из своей ветки с задачей (В примере Okriw/messenger::Okriw-authorization)
Когда реквест будет создан, то ваш код отправится на сборку автоматически. Сервис непрерывной интеграции постарается скомпилировать ваш код, проверит форматирование и запустит тесты. Если что-то не выполнится, то билд упадет, а вы увидите ошибку с описанием. Это значит, что ваш код не работает и его надо поправить. По ссылке Details вы можете узнать подробности и посмотреть ошибки.
Исправляйте ваш код и отправляйте изменения снова, пока не пройдут все тесты. Только после этого мы проводим код-ревью.