Академия: Конспект первой недели курса Learn GIT
Git - это система контроля версий. Она может фиксировать все изменения в файлах(и файловой системы), внесённых разными пользователями. Сливать их в один файл, откатываться к каждому изменению, иметь много версий и т.д. При командной разработке без неё(любой системы контроля версий) просто никак.
Схематичное устройство репозитория GIT
Создание проекта
Предположим, что у нас есть файл scene-1.txt и мы записали в него строку Harry Programmer and the Sorcerer’s Code: Scene 1
Далее работа идёт в командной строке(консоль, терминал)
Вначале нужно перейти в директорию с этим файлом.
Для создания проекта нужно выполнить команду
git init
Как выглядит работа файловой системы под управление git.
Вы находитесь в рабочей директории, то есть в папке, все файлы и подпапки которой находятся под "мониторингом" гита. Вы можете добавлять там файлы, удалять их и изменять.
Git фиксирует все изменения файловой системы.
Под изменением файловой системы я подразумеваю и изменения в файлах. То есть дописали строчку в текстовом файле - изменили файловую систему.
Сохранение изменений в репозитории git - он же commit.
Команды git
Самая частая в использованиии команда - это status
Пишите в консоли git status
и вы увидите все изменения в файловой системе. Какие файлы добавлены, какие удалены, в каких изменения.
На скриншоте в Untracked files у меня есть 2 файла. Это значит, что они ещё не "под гитом". То есть гит не отслеживает изменения в них.
Добавление файлов под контроль git`а
Чтобы git следил за состоянием файла - этот файл нужно "добавить в гит". Делается это командой add имя-файла.
Добавим наш файл scene-1.txt "под гит"
git add scene-1.txt
И сразу проверим статус
Как видите - файл scene-1.txt попал в Changes to be commited. Теперь гит следит за этим файлом.
Можно добавить и сразу несколько файлов. Их имена идут через пробел. Например : git add file-1.txt file-2.txt
Отслеживание изменений в файлах
После добавления файла под контроль гита всегда можно посмотреть внесённые в него изменения. Для этого используется команда diff
Если после слова diff указать имя файла - будут показаны изменения только в этом файле. Если имя не указывать - то во всех.
git diff scene-1.txt
Отправка изменений в git
Теперь, когда мы внесли изменения в файловую систему - можно закоммитить эти изменения командой commit.
Опцию -m лучше использовать всегда, она позволит прикрепить сообщение к коммиту. Без них вы потом никогда не разберётесь что у вас в коммитах.
Напишем:
git commit -m "Complete first line of dialogue"
Гит показал имя файла в коммите и даже количество добавленных строк.
История изменений гита
Лог всех коммитом всегда можно посмотреть командой:
git log
Каждый коммит имеет свой id. По нему всегда можно на него откатиться, или сравнить коммит с другим коммитом.
Просмотр коммитов
Для просмотра коммита используется команда show, после которой идёт id коммита. Последний коммит будет показан по ключевому слову HEAD
git show HEAD
Откат на предыдущие коммиты
Давайте внесём изменения в файл и сразу посмотрим на них
Я изменил строки с 15 по 17
Давайте теперь отменим изменения этих строк до состояния последнего коммита командой checkout.
git checkout HEAD scene-5.txt
После id коммита(в нашем случае это HEAD) указывается имя файла, который надо откатить.
Так-же отменить изменения можно командой reset.
Например так.
git reset HEAD scene-2.txt
Отличия reset от checkout не описать в двух словах. Если вкратце - то reset отменяет изменения, а checkout перемещает HEAD на другие бранчи или коммиты. Так что checkout "безопаснее", вы ничего не потрёте. А reset перезапишет историю. Так что обращайтесь с ним аккуратно.
Работа reset выглядит примерно так.
a, b, c, d, HEAD - это коммиты.
Что для меня было наиболее интересным и впечатляющим в данной неделе курса?
Понравились практические занятия с checkout и reset. Наглядно показано как откатить изменения в одном файле, а не по всей ветке. Все команды, данные в курсе, легко усваиваются, а их названия интуитивно понятны.
Вы можете самостоятельно пройти этот курс тут. И поучаствовать во второй части академии от @ontofractal.