Итак, я некоторое время возвращался к программированию, на этот раз в Clojure, и по сравнению с прошлым разом, когда я занимался компьютерным программным обеспечением (это было более 10 лет назад), многое изменилось.

Одно из самых больших изменений коснулось контроля версий и github. Теперь, когда у меня есть базовые навыки работы с git, я не могу представить, чтобы я не использовал его для любого проекта, над которым работаю. Это один из тех странных инструментов, которые невероятно просты, но невероятно сложны. Однако я чувствую, что как только вы освоите основы, вы сможете многое сделать с помощью git.

Создание репозитория git

Предполагая, что у вас есть проект, который вы хотите поставить под контроль версий, первый шаг:

git инициировать

Теперь, если вы запустите "ls -a" в каталоге вашего проекта, вы увидите там каталог ".git". Здесь живет ваш проект с контролем версий.

Добавление материала в репозиторий git

Добавление материала в репозиторий git — это двухэтапный процесс. Первый шаг:

git add ‹имя-файла› ‹имя-файла› .. ‹имя-папки›

И второй шаг:

git commit -m «сообщение фиксации»

Когда я впервые работал с Git, я хотел, чтобы это было не два шага, а всего один, но с тех пор я вырос, чтобы оценить ценность двух шагов. Вот разбивка того, что делают эти два шага:

  1. Шаг 1 (где вы выполняете git add) добавляет материал в нечто, называемое staging area. Думайте об этой промежуточной области как о месте, где вы накапливаете изменения, которые хотите добавить в репозиторий. Теперь, если вы похожи на меня, вы, возможно, создали временные файлы для проверки чего-либо или внесли некоторые изменения в код только для проверки и не хотите этого делать. Это место, где вы можете решить, что входит в репо, а что нет.
  2. Шаг 2 (где вы выполняете git commit) — это шаг, на котором вы добавляете материал в свой репозиторий, коммитя его. Хотите доказательство того, что ваши вещи были совершены? Запустите: git log, чтобы увидеть, есть ли там ваши данные.

Коммит

В Git есть такая штука, как коммит. Это похоже на снимок всего вашего проекта. Буквально предположим, что вы создали zip-файл всего вашего проекта и дали ему имя. Это в основном то, что такое коммит. Теперь шаг 2 сверху - это этот процесс. Когда вы выполнили шаг 2, вы должны подумать, что создали zip-файл всего вашего проекта и добавили zip-файл в каталог .git вашего проекта. Чтобы просмотреть коммиты в вашем репо:

журнал git

Хотя git log хорош, я предпочитаю использовать альтернативную команду, которая печатает список коммитов в гораздо более удобном для пользователя формате.

git log — график — pretty=format:’%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr)%Creset’ — abbrev-commit — date=relative

Это даст вам действительно хороший список, например:

Здесь, если вы посмотрите, все эти глупо выглядящие 6-значные буквенно-цифровые символы в основном являются вашими коммитами. Они также называются SHA, поскольку криптографический алгоритм, используемый для создания вашего коммита, — это алгоритм SHA-256. В любом случае, главное здесь то, что 9ab9886 — снимок всего проекта 25 часов назад. e396774 — это снимок всего проекта, сделанный 4 часа назад. И это довольно круто! Вы поймете почему через секунду.

Теперь, с небольшим уклоном, я не могу вспомнить и запускать всю эту команду git pretty каждый раз, когда она мне нужна, поэтому вместо этого я создаю для нее псевдоним . Это можно сделать, добавив запись в файл $HOME/.gitconfig в разделе alias. Вот копия моего gitconfig, который поможет вам начать работу.

Здесь я добавил псевдоним lg для команды pretty print.

lg = log — график — pretty=format:’%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr)%Creset’ — abbrev-commit — date=relative

Возвращаясь во времени

А теперь вспомните, что я сказал о том, что все эти снэпшоты существуют, и это действительно круто — вот почему. Вы можете вернуться в прошлое к любому снимку, который вам нравится. Теперь, почему вы хотите сделать это? Одна из важных причин заключается в том, что, скажем, у вас что-то работало раньше, а теперь перестало работать, вы можете вернуться к состоянию до. Вот как:

Git-касса e396774

Здесь замените e396774 на фиксацию, к которой вы хотите вернуться. Когда вы закончите смотреть на вещи и захотите вернуться к самой последней версии вашего проекта, просто запустите:

мастер проверки git

Вот и все. Теперь вы вернулись к самой последней версии вашего проекта. Довольно круто, а?

Переносим вещи на Github

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

git remote add origin ‹github-url›
git push origin master

Когда вы закончите с этим, все снимки, которые были в вашем каталоге .git, теперь будут скопированы на github.

Синхронизация вещей с Github

Предположим, вы сейчас находитесь на другом компьютере и хотите скопировать репозиторий с Github. Точная терминология — клонирование, но копирование более или менее отражает суть этого процесса. Команда, которую вы должны запустить:

клон git ‹github-url›

Теперь у вас будет полная копия вашего проекта. Вы можете продолжить работу над ним на этой новой машине, зафиксировать изменения и отправить их на github, как вы делали это раньше.

TL;DR

Git невероятно полезен и просто изучает несколько команд, таких как:

git checkout
git add
git commit
git push
git pull
git clone

Унесет вас далеко. Это только начало, и есть много других интересных команд, таких как rebase, branch, merge, revert, reset и т. д., которые также очень полезны.