Git

Java Online Projects edited this page Apr 20, 2018 · 68 revisions
Clone this wiki locally

Git

Основы работы с системами контроля версий в IntelliJ IDEA

Правила работы с патчами на проекте

  • Как накатывать патчи есть в видео вступительного занятия Работа с проектом
  • Все изменения в проекте производятся только патчами из урока в ветке master, а cвой код (домашние задания) пишете только в ветках HWxx. Модификация кода в ветке master только через патчи в материалах урока (Apply Patch), иначе придется мержить код. Все патчи объязательны и применяются по порядку. Если при применении патча предлагается мердж, cмотрите: Patch не накатывается (предлагает merge) .

ВНИМАНИЕ! проверьте при коммите, что галочка справа Optimize imports выключена, иначе ваши классы будут отличаться от тех, что в репозитории.

  • Делать Apply Patch лучше по одному, непосредственно перед видео на эту тему, а при просмотре видео сразу отслеживать все изменения кода проекта по изменению в патче (Version Control->Local Changes-> Ctrl+D на файле, Alt + Left/Right для просмотра следующего изменения):

image

  • при первом Apply надо выбрать имя локального ченджлиста Name: Default. Все остальные патчи (если имя не менять) будут также в него попадать.

image

  • commit рекомендую делать после каждого патча (тогда изменения в проекте смотреть легче), а push после всех патчей/коммитов урока (откатываться проще и работы меньше).

  • После патча часто полезно запустить и посмотреть на работу приложения (если оно запускается).

  • Правило: Перед каждым изменением проверяйте что меняется: Ctrl+D по всем файлам ченджлиста. Если только пробелы - делайте revert.

Как вести проект (у себя в локальном проекте):

Вступительное занятие:

  • apply patch Prepare_to_HW0.patch
  • git commit/push

Домашнее задание HW0:

  • создать ветку HW0: в IDEA внизу справа + New Branch ->HW0 new_branch
  • выполняете Домашнее Задание (HW0), git commit/push
  • выполняете HW0 Optional, git commit/push

Урок 1:

  • переключаемся на master: в IDEA внизу справа Local Branches -> master -> checkout
  • apply все патчи урока Lesson01, git commit/push

Домашнее задание HW1:

  • создать ветку HW1: в IDEA внизу справа + New Branch ->HW1
  • выполняете HW1, git commit/push
  • выполняете HW1 Optional, git commit/push

Урок 2:

  • переключаемся на master: в IDEA внизу справа Local Branches -> master -> checkout
  • apply все патчи Lesson02, git commit/push
  • ...

Так должна выглядеть ваш Version Control -> Log: branch

Как откатить patch?

Version control -> Log Правой кнопкой на нужной ревизии -> Reset Current Branch to Here Soft- оставить все изменения, Hard - все затереть (в том числе локальные изменения)

resetcurrentbranch

Если изменения уже запушили, то нужно их перетереть новым push --force

Из IDEA:

git_force git_force2


Обновить проект из github: Ctrl+T

update

Сравнить файл после определенного патча на github с локальным

  1. Идем в историю коммитов репозитория проекта:

image

  1. Выбираем просмотр репозитория после нужного патча

image

  1. Выбираем проблемный файл в формате Raw

image

  1. Копируем в буфер и сравниваем со своим в IDEA

image

Patch не накатывается (предлагает merge)

Вероятнее всего Ваша ветка master не соответствует моей. Нужно просто сравнить проблемный файл.

Например открываете проблемный класс на github в режиме Raw (кнопка справа вверху над классом, например https://raw.githubusercontent.com/JavaWebinar/topjava02/master/src/main/java/ru/javawebinar/topjava/web/meal/UserMealRestController.java, копируете его (Ctrl+A, Ctrl+C) и сравниваете со своим в IDEA: View->Compare with Clipboard.

В более общем случае (когда github уже ушел вперед) посмотреть содержимое файла для определенной версии в IDEA можно через Git->History на файле: idea_history или на истории изменений Version Control->Log

idea_revision и двойном щелчке на файле.

Сравнивать можно в github с текущей версией проекта либо с соответствующей ревизией:

github_revision


Сравнить содержимое можно скопировав содержимое из github в буфер:

github_raw

и сделать Compare with clipboard в IDEA:

compare_with_clipboard

Если ваш файл совпадает с тем, что в репозитории и патч все равно не накатывается, напришите мне в личку- имя файла, номер патча и проблемные строки, я поправлю патч. Картинок с вашими ошибками слать НЕ НАДО, учимся грамотно определять и описывать проблему.

Чем просматривать локально файлы в формате markdown ?

  • в IDEA, плагин Markdown Navigator
  • в Chrome, плагин Markdown Preview (в опциях надо разрешить открывать файлы по ссылкам)
  • можно вчекинить уроки себе с github репозиторий и смотреть через github