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

Что такое Git?

Git - это система контроля версий, в частности, DVCS (распределенная система контроля версий). С помощью git вы можете зафиксировать свою работу в онлайн-репозитории. Затем ваши коллеги могут клонировать ваш репозиторий, разветвляться от него, объединяться с вашей веткой и многое другое. Git делает все это, сохраняя при этом отличную производительность, что делает его самой популярной современной системой управления версиями на сегодняшний день.

Как пользоваться Git?

А теперь перейдем к самому интересному. Чтобы использовать git, вам сначала нужно установить его. Установка git отличается в каждой операционной системе, поэтому просмотрите веб-сайт здесь и найдите руководство, наиболее подходящее для вашей личной ОС.

После его установки мы можем начать использовать git. Создайте каталог, перейдите в этот каталог с помощью командной строки или оболочки и введите:

git init

Эта команда создает пустой репозиторий git в текущем каталоге, в котором вы находитесь.

Затем давайте создадим файл в этом каталоге. Чтобы упростить задачу, давайте создадим простой текстовый файл с именем «file.txt», например:

Не стесняйтесь вводить в этот файл все, что хотите. Но теперь наше хранилище уже не так пусто. Так как же заставить git отслеживать это изменение? Мы просто набираем в командной строке:

git add .

Это добавляет в индекс все вновь созданные файлы. Индекс содержит снимок следующей фиксации. Говоря о фиксации, давайте сделаем это с помощью:

git commit -m [COMMIT_MESSAGE]

Вы можете добавить любое сообщение в COMMIT_MESSAGE, просто убедитесь, что оно описывает вашу текущую фиксацию.

Например, поскольку мы только что добавили файл file.txt, наше сообщение фиксации может быть «Добавлен файл.txt», поэтому наша команда будет выглядеть следующим образом:

git commit -m "Added file.txt"

Вот и все! Вы зафиксировали последнее изменение своего «проекта» в репозитории git.

Однако это только в вашем локальном репозитории. Как мы можем создать онлайн-репозиторий, который также будет отслеживать наш маленький проект здесь?

Удаленный репозиторий Git

Я рекомендую два популярных веб-репозитория git. Это GitHub и GitLab. Если вы еще этого не сделали, создайте учетную запись на любом из двух веб-сайтов.

После этого вам нужно будет создать новый репозиторий, не стесняйтесь давать ему любое имя, которое хотите. Если вы закончили с этим, скопируйте ссылку HTTP, которая должна быть в правом верхнем углу вашего репозитория, например:

В зависимости от того, пуст ли ваш репозиторий, его также можно найти под кнопкой кода, например:

Затем в локальном репозитории еще раз откройте командную строку и введите:

git remote add origin [LINK_TO_REPOSITORY]

Это добавляет наш веб-репозиторий в качестве удаленного репозитория и называет его origin. Наконец, в командной строке введите:

git push origin master

Теперь это перемещает наш локальный репозиторий в исходный удаленный репозиторий, который является веб-репозиторием, который мы создали.

Теперь, если вы обновите свой репозиторий, вы должны увидеть файл «file.txt», который мы создали на нашем локальном компьютере. Отличная работа!

Разветвление

По нашей последней команде, которая была:

git push origin master

Вам может быть интересно, что такое «мастер». Мастер - это ветка в нашем репозитории, это первая ветка по умолчанию, созданная, когда мы инициализировали наш репозиторий в самом начале.

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

Мы можем сделать это с помощью команды:

git checkout -b [BRANCH_NAME]

Не стесняйтесь давать своей ветке любое имя, которое хотите, вы также можете назвать ветку своим именем, если хотите. Я назову свою ветку «Луч», поэтому моя команда будет такой:

git checkout -b Ray

Если вы хотите вернуться в основную ветку, вы можете просто ввести:

git checkout master

Правильно, флаг «-b» в команде оформления заказа предназначен для создания новой ветки. Если вы не добавите флаг -b, вы просто переключитесь на другую ветку (если она существует).

Вы можете проверить, в какой ветке вы находитесь, набрав:

git branch

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

Теперь давайте добавим что-нибудь новое в нашу текущую ветку. Вы можете создать новый файл или просто добавить текст в наш файл file.txt.

После этого нам нужно повторить предыдущую процедуру фиксации в нашем локальном репозитории, набрав:

git add .

А также

git commit -m [COMMIT_MESSAGE]

Наконец, давайте поместим нашу фиксацию в наш удаленный репозиторий, набрав:

git push origin [BRANCH_NAME]

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

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

git checkout master

А затем вытащите из нашей новой ветки, набрав:

git pull origin [BRANCH_NAME]

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

В качестве альтернативы мы также могли бы объединить нашу ветку с главной ветвью, сначала переключившись на главную ветку и набрав:

git merge [BRANCH_NAME]

Если мы это сделаем, нам не нужно будет отправлять и извлекать данные из нашей ветки в удаленный репозиторий.

Вернуть и записать

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

Здесь на помощь приходит контроль версий в git. Если вы помните, в самом начале я сказал, что git отслеживает версии нашего приложения.

Мы можем просмотреть все версии или коммиты, набрав:

git log

Результат должен быть похож на этот:

Выглядит сложно? Давайте обсудим каждую часть по очереди:

Желтый текст - это ваш идентификатор фиксации, он понадобится вам позже для того, что мы собираемся делать. Ниже вы, автор. Тогда информация под вами - время и дата этого коммита. Наконец, в самом низу находится сообщение о фиксации.

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

Во-первых, обратите внимание на идентификатор фиксации, который мы хотим вернуть, и скопируйте его. В моем случае это фиксация с сообщением «Добавлен текст в file.txt», а идентификатор фиксации:

a9dccd563efa30e2c328d511f0080f91b75d669e

Наконец, вставьте его в команду:

git revert [COMMIT_ID]

Что делает команда возврата? По сути, он создает «зеркало» текущего коммита.

Итак, если вы добавили файл, он удалил бы его, если вы удалили файл, он добавил бы его и так далее. В некотором смысле он отменяет фиксацию на предыдущую.

Если при возврате возникла проблема, просто введите:

git status

И решить вопрос. Обычно способ решения проблемы состоит в том, чтобы удалить или добавить файлы, чтобы можно было выполнить возврат.

Другие команды

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

  1. git clone

Если у вас или ваших коллег уже есть непустой удаленный репозиторий, и вы хотите получить все данные (вместе с удаленным источником) этого репозитория, вы можете использовать этот метод.

Синтаксис этой команды:

git clone [LINK_TO_REPOSITORY]

2. git rebase

Подобно слиянию с точки зрения его цели. Rebase - это способ перемотать вашу ветку в другую ветку. Используя перебазирование вместо слияния, мы можем добиться более «линейного» ветвления. См. Иллюстрацию ниже:

Не знакомы с приведенной выше иллюстрацией? Это визуализация ветвей git, мы делаем это для того, чтобы понять, как наши коммиты и ветки выглядят и ведут себя в git.

Если вы хотите поиграть с визуализацией веток git, вы можете посетить веб-сайт здесь для более интерактивного обучения.

Синтаксис rebase:

git rebase [BRANCH_NAME]

3. git stash

Команда stash используется для сохранения незафиксированных изменений во временной памяти git. Для git stash есть несколько основных команд:

а. git stash сохранить

Сохранит изменения во временную память. Синтаксис этой команды:

git stash save [STASH_NAME]

Где STASH_NAME может быть чем угодно.

б. git список тайников

Отображает список сохраненных тайников. Команда проста:

git stash list

c. git stash pop

Удаляет самый верхний тайник из временной памяти и добавляет его обратно в проект. Команда такая:

git stash pop

d. git stash применить

Возвращает определенный тайник в проект, не удаляя его из временной памяти. Синтаксис этой команды:

git stash apply [STASH_NAME_AND_ID]

Вы можете увидеть имя и идентификатор тайника, используя команду git stash list.

Заключение

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

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

[1]: https://git-scm.com/docs/user-manual

[2]: https://www.atlassian.com/git/tutorials/merging-vs-rebasing