По мере своего становления в роли разработчика приходит понимание того, что большая часть работы ведется в команде. И при работе в команде нужна система контроля версий, которая поможет управлять изменениями в коде, сделанными разными разработчиками.
Git — это одна из самых популярных систем контроля версий. И, тем не менее, она повергает новичков-разработчиков в шок — поверьте на слово, сам прошел через это. К слову сказать, я побаивался Git на протяжении нескольких лет.
Если вы опытный разработчик и не дрожите от одного упоминания Git, то смело закрывайте эту статью и выбирайте что-то потруднее. Но если вы новичок в Git или не уверены в своих знаниях, то посвятите пару минут своего времени изучению основных, но весьма важных, аспектов Git.
Вот о чем поговорим:
- Git clone.
- Git checkout.
- Git pull.
- Git add и commit.
- Git stash и merge.
- Git push.
Git clone
Всегда клонируйте новые репозитории, над которыми работаете. То есть, закачивайте копии файлов репозитория на свой локальный компьютер. Существует множество способов клонирования репозитория. Однако я объясню технологию на примере командной строки.
Допустим, вы захотели клонировать репозиторий со скриншота, представленного выше. Для начала скопируйте ссылку клонирования (см. выше). Затем откройте терминал и через cd
перейдите в область на компьютере, куда будут копироваться файлы. Если вы хотите клонировать ветку master
, то напечатайте git clone
и вставьте ссылку, как это показано ниже:
git clone https://github.com/JamesOkunlade/old-apple.git
Для клонирования определенной ветки репозитория сделайте следующее:
git clone https://github.com/JamesOkunlade/old-apple.git -b branch-name
Git checkout
Лучше всего не работать напрямую в master
, а создавать отдельные ветки под разные опции. Как только вы решите, что все фичи соответствуют требованиям и готовы к тестированию, смело сливайте их с веткой master
.
В процессе работы возникает необходимость перехода в отдельную ветку репозитория. Это можно сделать следующей командой.
Если ветка уже создана:
git checkout branch-name
Если вы создаете новую ветку опций:
git checkout -b branch-name
Git pull
Ваша команда или коллега-разработчик могут изменять ветки репозитория. И каждый раз перед написанием кода вы должны вливать эти изменения в ветку, с которой будете работать. Перейдите в ветку через checkout
и выполните команду git pull
. Последние изменения будут влиты в локальный репозиторий.
Git add и commit
Команды add
и commit
почти всегда неразлучны. Это как захват и сохранение данных. Вы не сможете ничего сохранить, пока не захватите нужные данные. Таким образом, команда add
всегда предшествуетcommit
. С командой add
вы указываете определенный файл, который требуется захватить в текущем состоянии, а commit
сохраняет его копию.
Для захвата всех файлов (кроме исключений изgit ignore
) понадобится git add.
Захват текущего состояния отдельно взятого файла (к примеру, index.html
) делается через git add index.html
.
После создания снимков репозитория их нужно закоммитить и сохранить в локальный репозиторий. Это делается через следующую команду:
git commit -m ‘commit message’
Сообщение в коммите должно пояснить специфику сохраняемых снимков. Например:
git add index.html
git commit -m ‘создание кнопки формы опции’
Две команды можно объединить через оператор&&
:
git add index.html && git commit -m ‘создание html структуры футера’
Git stash и merge
git stash
сохранит все изменения ветки, которые вы не хотите коммитить. Это значит, что вы можете ждать, пока другой разработчик закоммитит и вольет копию своих изменений в ветку, и параллельно экспериментировать с той же веткой. Git всячески это приветствует. Если вы хотите просто влить новые изменения в локальный репозиторий, но не выполнять слияния с веткой, то просто сохраните эти изменения черезstash
. git stash
сохранит копию этих изменений. Их можно будет просмотреть через список git stash
.
git merge
– это команда, которая сливает два разных снимка репозитория. Вы можете сливать разные снимки изменений одной и той же ветви, сделанные разными разработчиками. Либо же можно сливать разные снимки разных веток.
При переходе в ветку master
команда git merge
сливает ветку dev
с master
и наоборот.
Git push
По аналогии с тем, как вы сохраняете снимки в Google Фото, и их видят другие люди, имеющие доступ, git push
отправляет локальный репозиторий на сервер, доступный другим пользователям.
git push -u origin branch-name
Перевод статьи James Okunlade: The essentials of Git explained in five minutes