- 
                Notifications
    
You must be signed in to change notification settings  - Fork 2.9k
 
- Как накатывать патчи есть в видео вступительного занятия Работа с проектом
 - 
Все изменения в ветке 
masterпроекта производятся только патчами из урока (Apply Patch), а cвой код (домашние задания) комитьте только в веткиHWxx. Все патчи урока обязательны и применяются по порядку. Если при применении патча предлагается мердж, cмотрите: Patch не накатывается (предлагает merge) - вы где то ошиблись с патчами. 
ВНИМАНИЕ! проверьте при коммите, что галочка справа
Optimize importsвыключена, иначе ваши классы будут отличаться от тех, что в репозитории.
- Делать Apply Patch лучше по одному, непосредственно перед видео на эту тему, а при просмотре видео сразу отслеживать все изменения кода проекта по изменению в патче (
Version Control->Local Changes-> Ctrl+D на файле, Alt + Left/Right для просмотра следующего изменения): 

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

- 
commitнастоятельно рекомендую делать после каждого патча (тогда изменения в проекте смотреть легче и искать ошибки в комитах гораздо проще), аpush- после всех патчей/коммитов урока (откатываться проще и работы меньше). - 
После патча часто полезно запустить и посмотреть на работу приложения (если оно запускается).
 - 
Правило: Перед каждым изменением проверяйте что меняется: Ctrl+D по всем файлам ченджлиста. Если только пробелы - делайте revert.
 
- apply patch 
Prepare_to_HW0.patch git commit- проверить, что все изменения корректно закомитилось (в 
Version Control:Local Changesпусто) -> push 
- создать ветку 
HW0: в IDEA внизу справа+ New Branch ->HW0 

- выполняете Домашнее Задание (HW0)
 - проверить каждое изменение в 
Version Control:Local Changes-> commit - выполняете HW0 Optional
 - проверить каждое изменение в 
Version Control:Local Changes-> commit - проверить в 
Version Control:Log, что все изменения корректно закомитились и вVersion Control:Local Changesпусто -> push 
- переключаемся на 
master: в IDEA внизу справаLocal Branches -> master -> checkout - apply каждый патч урока 
Lesson01. - проверить каждое изменение в 
Version Control:Local Changes-> commit - проверить в 
Version Control:Log, что все патчи корректно закомитились и вVersion Control:Local Changesпусто -> push 
- создать ветку 
HW1: в IDEA внизу справа+ New Branch ->HW1 - выполняете HW1
 - проверить каждое изменение в 
Version Control:Local Changes-> commit - выполняете HW1 Optional
 - проверить каждое изменение в 
Version Control:Local Changes-> commit - проверить, что все изменения корректно закомитились в 
Version Control:Log, вVersion Control:Local Changesпусто -> push 
- переключаемся на 
master: в IDEA внизу справаLocal Branches -> master -> checkout - apply каждый патч урока 
Lesson02. - проверить каждое изменение в 
Version Control:Local Changes-> commit - проверить в 
Version Control:Log, что все патчи корректно закомитились и вVersion Control:Local Changesпусто -> push - ...
 
Так должна выглядеть ваш Version Control -> Log:


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

Если изменения уже запушили, то нужно их перетереть новым push --force
В IDEA в protected branches убрать ветки, на которые требуется force push:



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

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

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

Вероятнее всего Ваша ветка 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 на файле:
или на истории изменений Version Control->Log
и двойном щелчке на файле.
Сравнивать можно в github с текущей версией проекта либо с соответствующей ревизией:

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

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

Если ваш файл совпадает с тем, что в репозитории, и патч все равно не накатывается, напишите мне в личку имя файла, номер патча и проблемные строки, я поправлю патч. Картинок с вашими ошибками слать НЕ НАДО, учимся грамотно определять и описывать проблему.
Или можно радикально решить проблему, склонировав наш общий проект https://github.com/JavaWebinar/topjava
- в IDEA, плагин Markdown Navigator
 - в Chrome, плагин Markdown Preview (в опциях надо разрешить открывать файлы по ссылкам)
 - можно вчекинить уроки себе с github репозиторий и смотреть через github
 
- откатываете ревизии до "хорошего" патча Как откатить patch с выбором 
Hard(все локальные изменения также пропадут). Затем накатываете патчи заново по порядку. - Сделайте fork, либо 
cloneс нашего репозиторий c уже примененными патчами (см ниже). 
- Создайте локальную копию проекта: 
git clone https://github.com/..../project - Перейдите в каталог проекта: 
cd project - Настройте git в локальном проекте на свой проект в GitHub:
git remote -v- 
git remote set-url origin url_на_твой_репозиторий.git- настройка pull - 
git remote set-url --push origin url_на_твой_репозиторий.git- настройка push - 
git push -u origin master- первый push в свой репозиторий 
 
Клик на ревизии в Local Changes и -> Interactively Rebase from Here...
- 
action -> squash- Склеить - другие действия