November 29, 2020

От пустого места до пулл-реквеста

Или пятнадцать простых шагов в гит

Эта публикация была написана для всех тех, кто никак не может справиться с "этим сложным гитом" и/или не понимает, зачем он нужен, почему это удобно, и как это работает. Ориентирован данный материал будет на пользователей продуктов JetBrains, в частности, IntelliJ продуктов, а именно, IDEA. И это не реклама.

"Гит это обло, озорно, огромно, стозевно и лаяй" (С) Радищев и все студенты.

По гит существуют тысячи статей, обучающих видео и прочего. Чего только стоит краш-методичка по пулл реквестам написанная мной для устраивающихся на работу в мою группу программистов. Но ни в одной из этих статей нет чёткого алгоритма: делай раз, делай два, делай три, чтобы не вникать в сложный инструментарий, идеологию гит и прочие тонкости. Дальнейшие действия предполагают наличие установленного на устройстве Git отсюда.

  1. Создаём пустой проект. С этого всегда всё начинается.
  2. Ищем пункт меню VCS - Import into Version Control - Create Git repository.
  3. Создаём новый гит репозиторий в той папке, в которой только что создали новый проект. Среда разработки немножко подумает и окрасит файлы Вашего проекта (список слева) в красный цвет.
  4. Самый сложный пункт. IDEA почему то создаёт файл .gitignore не в корневом каталоге, который Вы указали, а в папке .idea сакральный смысл этого действия нам не дано понять, поэтому просто поправим согласно наших нужд. Файл .gitignore должен лежать в корневой папке только что созданного проекта. Это важно, без этого не продолжаем.
  5. Внутри самого файла .gitignore должны лежать следующие строки:
    .idea/ out/ *.iml То есть мы говорим гиту, что нам эти файлы и папки в наших коммитах не нужны, полезной информации они не несут. В списке слева они должны будут окраситься в условно-жёлтый цвет.
  6. Мы подготовили репозиторий к версионированию, пришло время сделать первый коммит. Коммит - это фиксация изменений, которые мы внесли. нам нужно зафиксировать наш файл .gitignore в созданном проекте. Для этого идём в меню VCS и нажимаем Commit (обратите внимание, что напротив слова Commit есть клавиатурное сокращение для быстрого доступа к команде, им можно пользоваться)
  7. В появившемся окне выбираем в списке Unversioned files наш файл .gitignore вводим Commit Message (что-то вроде дополнительного комментария о фиксируемых изменениях, например "добавлен файл gitignore"), и радостно нажимаем кнопку Commit.
  8. Переходим в хостинг репозиториев, например, GitHub, и создаём там репозиторий (не путать с локальным репозиторием из пунктов 2-6). Важно создать пустой репозиторий, не выбрав (даже случайно) галочку "Initialize with readme" или подобную. На GitHub'e мы будем хранить наш репозиторий и демонстрировать его миру.
  9. На странице созданного на GitHub'e репозитория мы видим много вариантов того, как подключить его к локальному. Мы будем использовать вариант push an existing repository. Нам понадобится ссылка на наш репозиторий из этого пункта, она оканчивается на .git
  10. В IDEA идём в меню VSC - Git - Remotes - Add (или значок плюса) и вставляем туда только что взятую с GitHub'a ссылку.
  11. Отправляем изменения в GitHub. Для этого нам нужно выполнить команду Push. Найти её можно в меню VCS - Git - Push.
  12. Мы подготовили репозиторий к дальнейшим изменениям. Для каждого изменения (добавления функционала приложения, выполненного задания, закрытой задачи) нужно будет повторять действия, начиная с этого пункта. Создаём ветку от последнего коммита ветки master. Внутри этой ветки мы будем делать всю нашу текущую работу. Название этой ветки не имеет принципиального значения, но будет хорошо, если название будет отражать суть того, что планируется разработать в этой ветке.
  13. Пишем функционал (задание, задачу). Добавляем классы и методы, проверяем работоспособность и делаем прочие полезные вещи. По мере написания - можно, и нужно делать промежуточные коммиты, говорящие о проделанной работе. По окончании работы - обязательно делаем коммит.
  14. Закончив работу над задачей (заданием, функцией) мы можем "запушить ветку в ремоут". Проще говоря, отправить все изменения на GitHub. Мы уже делали это для ветки master в одиннадцатом пункте.
  15. В GitHub теперь можно создать Pull-request, то есть фактически, предложить слияние своих изменений из ветки с заданием и основного проекта. Обратите внимание, при создании запроса, на вкладку Files. Именно на этой вкладке должны отобразиться все изменения, внесённые в проект в процессе работы над заданием. После завершения проверки необходимо завершить и предложенное слияние веток.