Всем привет.
Сегодня хотел бы рассказать об основных командах git, с помощью которых вы сможете решить 90% ваших задач, если не все 100%. Как-никак мы все пишем для разных проектов.
Что такое Git?
Git - это распределённая система управления версиями.
Проект был создан Линусом Торвальдсом в 2005 году. Если кто не знает - этот же дядька создал ядро Linux.
Джентльменский набор или же дамская сумочка
Для начинающих разработчиков, которые только учатся работать с системами контроля версий нужно не так уж и много:
- Создать проект
- Сохранить изменения
- Если есть необходимость - отправить храниться это все на удаленных сервер
Вот и все, что требуется в самом начале.
0. Перед началом работы
Хотелось бы сразу начать работать с git, но вот незадача - для этого его надо сначала установить на ваше устройство.
Для этого переходим на сайт git-scm и переходим в "Downloads". Там будут предложены варианту операционных систем, на которые вы можете установить Git.
Установка такая же, как в самом обычном приложении. Можно просто нажимать "Далее-Далее", если не хотите ни в чем разбираться.
1. Создаем проект
Вот вы установили Git на свой компьютер и у вас появилось приложение Git Bash (если вы используете Linux/MacOS, то у вас не будет приложения - пользуемся через терминал). Запускаем его и заходим в папку будущего проекта.
Нам нужно проинициализировать репозиторий (это отдельная сущность от папки/директории).
Вводим команду git init.
Сразу замечаем, что появилось сообщение, которое говорит нам о инициализации пустого репозитория Git. Так же, в строке с путем к рабочей папке мы можем заметить надпись (master). Так указывается ветка репозитория. В нашем случае название ветки - это master, так же главная ветка может называться main.
Поздравляю, вы создали свой репозиторий. Сейчас немного определений, если не интересует - можно пропустить.
Репозиторий - это место где хранятся какие-либо данные. Отличие от обычной папки в том, что его нужно специально инициализировать командой из терминала. Другими способами он не появится.
Ветка - это версия приложения. Обычно принято разрабатывать в отдельной, от master, ветке, чтобы не сломать версию приложения. Но кто мы такие, чтобы следовать правилам?
2. Появились изменения и их нужно сохранять
Каждый проект начинает с первой строчки кода, так что давайте создадим первый файл нашего проекта и что-нибудь в него запишем.
Я делаю с помощью терминала, вы же можете использовать какой-нибудь редактор кода/текста или графический интерфейс.
Мы создали какие-то изменения в проекте. Для того, чтобы посмотреть общий перечень всех изменений в проекте используем команду: git status.
В выдаваемой информации по команде мы можем увидеть данные о: ветке, в которой мы работает, а так же отслеживаемые и не отслеживаемые файлы.
Не будем сильно углубляться, но общая суть в том, что не отслеживаемые изменения не будут добавленны в коммит. Поэтому мы добавим наше изменение в отслеживаемую область проекта командой git add с флагом -A, что значит, что мы будем добавлять все изменения в отслеживание. Если есть необходимость добавить только один определенный файл - можно прописать путь и имя файла без флагов.
Выполним команду: git add -A или git add index.php, и посмотрим статус репозитория.
Можем заметить, что название файла стало зеленым, а так же блок принял название "изменения, которые необходимо зафиксировать". Так же около названия файла index.php появилась запись new file. Таким образом мы узнаем характер изменения. Это все маленькие индикаторы, которые показывают, что наше изменение попадет в коммит.
Теперь же нам нужно зафиксировать наше изменение, чтобы была какая-то точка в проекте, к которой можно будет обращаться. Это мы можем сделать командой: git commit с флагом -m "[текст коммита]"
При выполнении команды Git может запросить имя пользователя и e-mail. Это нужно, чтобы можно было понять кто сделал тот или иной коммит.
Выполним команду: git commit -m "Создали файл index.php"
В полученном ответе мы видим в какой ветке мы зафиксировали изменения, хэш коммита (уникальный идентификатор коммита), сообщение коммита, которое мы ввели через флаг -m (сообщение коммита обязательно), количество файлов в коммите и их перечень.
Давайте теперь посмотрим статус проекта.
Рабочая область чиста и никаких сообщений о только что зафиксированных изменениях. А где их посмотреть? В этом нам поможет команда: git log
Мы видим полный идентификатор коммита, автора, дату и сообщение коммита.
Коммит - это зафиксированные изменения, к которым можно обращаться в любое время.
3. Ветки вместо кучи папок
Теперь поговорим про ветки. Зачем они нам? Чтобы сделать новую версию продукта и чтобы не копаться в основном продукте.
Как вообще работаю ветки? Мы создаем копию ветки из которой создаем новую ветку и она идет параллельно с другими ветками в проекте.
Создадим новую ветку и переключимся на нее с помощью команды: git checkout -b [название ветки]
После выполнения команды мы получим ответ, что произошло переключение на новую ветку new_branch. На следующей строке можно увидеть, что имя рабочей ветки, которое в скобочка, поменялось на new_branch.
Давайте посмотрим какие ветки вообще есть в нашем распоряжении. Используем команду: git branch
Мы получили список локальных веток, которые имеются на проекте на вашем компьютере. Когда будем добавлять удаленный репозиторий, можно будет увидеть так же ветки в удаленном репозитории.
Зеленым цветом и звездочкой показывается рабочая ветка.
Давайте создадим новый файл и посмотрим статус проекта. Если хотите, можете наполнить чем-нибудь файл.
Добавим файл в отслеживаемую область, закомитим изменения и посмотрим историю коммитов.
Видим, что у нового коммита уже другой идентификатор и ветка.
Переключимся на мастер ветку и посмотрим лог (историю коммитов). Для переключения понадобится команда: git checkout [название ветки].
Как видите, в ветке master не показывают изменения, которые мы только что сделали в ветке new_branch. Чтобы перенести изменения из ветки new_branch в master нужно провести слияние веток. Для этого нам потребуется команда: git merge [название ветки]
Слияние нужно производить из ветки, в которую вы хотите получить изменения.
Произведем слияние.
Видим, что мы обновились с одного коммита до другого. Так же нам показывают, что мы получили с этого обновления. Посмотрим, что показываем нам лог.
Теперь изменения ветка master имеет последнюю версию проекта.
4. Удаленный репозиторий
Вот мы сделали какую-то версию проекта и захотели поделиться ей с другим разработчиком. Как нам это сделать? Отправлять тяжеленными архивами - не самая лучшая идея. На помощь нам придут удаленные репозитории. Вы можете использовать какой-нибудь сервис для хранения таковых (GitHub, BitBucket и другие) или использовать свой хостинг (но сначала его надо сделать). Я буду использовать BitBucket.
Для начала нам нужно создать репозиторий в выбранной системе. Как это делать - посмотрите в мануале системы. После создания нам нужно получить ссылку для подключения (в примере используется https, но можно использовать ssh подключение), она должна иметь похожий вид: https://novoselov_a@bitbucket.org/novoselov_a/phj.git
Теперь давайте добавим удаленный репозиторий к нам в проект, чтобы можно было взаимодействовать с ним. Для этого нам понадобится команда: git remote add [название удаленного репозитория на вашем пк] [ссылка для подключения]
Выполнили команду. Теперь нужно посмотреть список удаленных репозиториев, чтобы проверить произвели ли мы подключение. Для это выполним команду: git remote -v
Видим, что у нас доступно два варианта использования fetch (получение) и push (отправка).
Давайте отправим наши изменения в удаленный репозиторий, используя команду: git push [название удаленного репозитория на вашем пк] [ветка для отправки]
Потребуется сделать пароль для подключения. В мануалах к системам хранения есть инструкции по его созданию.
Данное сообщение говорит, что нам удалось отправить все коммиты в удаленный репозиторий. Если посмотреть на сайте, то увидим, что это похоже на истину.
Теперь давайте прям из браузера поправим что-то в коде и сохраним.
Как видим, коммит есть в удаленном репозитории. Но изменений нет на нашем пк. Нужно их получить. Для этого нам поможет команда: git pull [название удаленного репозитория на вашем пк] [ветка которую получаем]
Посмотрим лог.
Как можем заметить, появились изменения, которые мы сделали не на нашем пк.
Заключение
Мы рассмотрели основные команды для работы Git. С их помощью можно закрыть большинство рабочих задач, связанных с контролем версий проекта.