Что нужно знать про GIT, чтобы не было стыдно

Git можно сравнить с английским языком в программировании: не важно на каком языке ты пишешь свой код, git — та штука, которая будет использоваться повсеместно.

Как и всегда, я пишу эту заметку только для того, чтобы структурировать, в первую очередь, свои знания, но если она будет полезна для кого-то из 120 читателей, которые ежедневно посещают этот блог (по информации из гугл аналитики), я буду только рад!

Что такое git?

Чтобы понять это, можем представить ситуацию, когда вам нужно отредактировать любой важный файл, при этом вы хотите сохранить его копию, чтобы в любой момент вернуться к начальной точке. Как мы поступим в этой ситуации? Я предлагаю создать папку, назвать ее backups и сохранять туда все копии редактируемых файлов. Через некоторое время мы обнаружим, что файл, который мы хотим, в очередной раз, сохранить, уже имеется в нашей папке, по этому мы переименуем вновь добавляемый файл так, чтобы его можно было идентифицировать внутри нашей папки с бекапами. Работая по такому принципу, мы смело можем редактировать любой файл нашего проекта, не боясь потерять архи-важные строчки кода. Мы в любой момент можем восстановить что угодно из наших бекапов!

Собственно git работает по аналогичному принципу. Он создаёт каталог и хранит там версии наших файлов. Разница в том, что git не сохраняет полностью весь файл, а только изменения в нем. По этой причине он работает очень быстро.

Конечно, на деле все выглядит сложнее, чем описано выше. Вам прийдется разобраться с тем, что такое коммиты, ветки, как их объеденять (сливание веток), и в целом — понять весь принцип подхода работы через git. Ниже я постараюсь поверхностно описать основные термины, но цель этой статьи — не научит git-у, а создать понимания у читателя что это такое и как оно работает.

Основные термины git

Git репозиторий — папка, в которой находятся файлы, конфиги и другие данные, которые нужны для работы с git.

Удаленный git репозиторий — копия репозитория, которая хранится удаленно (Github, Gitlab, Bitbacket). Удаленные репозитории нужны если над проектом работает больше одного разработчика.

Коммит — фиксация и сохранение изменений в репозиторий. По сути — сохраненная копия файлов. К любому коммиту в git можно вернуться в любое время.

Ветка — копия репозитория, которая может развиваться параллельно. Каждый git репозиторий содержит по меньшей мере одну ветку (обычно — master).

Слияние (merge) — слияние изменений из одной ветки в другую в рамках одного репозитория.

Клонирование — копирование удаленного репозитория на локальный компьютер.

Список GIT команд, которыми я пользуюсь ежедневно

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

Создание новой ветки и переход к ней

Когда на проекте появляется новая задача — я должен создать новую ветку и решить задачу в ней.

git checkout -b <название_новой_ветки>

Выбор файлов для коммита

Для выбора файлов, которые будут включены в коммит можно применить команду, которая добавит все измененные файлы для отслеживания в GIT:

git add .

А для выбора конкретного файла можно передать путь к этому файлу вместо точки:

git add /путь/к/файлу/который/включаем/в/коммит

Командой для добавления файлов в коммит я пользуюсь крайне редко, потому как предпочитаю пользоваться графическим интерфейсов, где можно очень легко выбрать файлы, которые нужно добавить.

Сохранение коммита

После добавления файлов на отслеживание, можно зафиксировать изменения, сохранив их в коммит (закоммитив).

Для выполнения данного действия можно использовать команду:

git commit -m "Описание изменений в коммите"

Отмена всех изменений

Если я закоммитил лишнее, отменить это действие можно при помощи команды reset. Есть несколько типов reset: чаще всего я пользуюсь soft или hard. От типа reset зависит что произойдет с изменениями в коммите:

  • soft — все изменения будут сохранены, а коммит будет удален;
  • hard — коммит и изменения в нем будут удалены так, что их не вернуть.
git reset --soft

Просмотр недавних коммитов

Для просмотра истории коммитов можно использовать команду, которая выведет автора, дату и комментарии к коммитам

git log

Получение изменений из удаленной ветки

Когда другие разработчики вносят изменения в проект — версия удаленного и локального репозиториев может не совпадать. Для получения последней версии из удаленного репозитория можно использовать команду, которая получит и объеденит все изменения между репозиториями.

git pull

Отправка коммитов на удаленную ветку

Когда задача решена, протестирована и готова в репозиторий, я пользуюсь командой, которая загрузит все изменения в локальной версии репозитория на удаленный сервер

git push

Если я работаю один в своей ветке, этого достаточно для отправки. Но если в одной работают несколько разработчиков, лучше использовать git pull перед git push, дабы убедиться, что конфликтов при отправке не возникнет.

А вообще

Как мне кажется, лучше использовать графический интерфейс для работы с GIT, вам не прийдется запоминать команды для выполнения рутинных действий. Отличный пример таких программ: SourceTree или встроенные инструменты для работы с GIT в вашей IDE.

Anatolii Koziura

Антураж-куражмонтаж в мире web разработки.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *