Изучите команды Git на практических примерах в Linux — часть 1
Изучите команды Git на практических примерах в Linux — часть 2
Git — это распределенная система контроля версий. Он в основном используется разработчиками программного обеспечения для управления исходным кодом. Git — это бесплатное программное обеспечение с открытым исходным кодом, и многие крупные организации используют его для управления своей огромной базой кода.
В этом руководстве мы познакомимся с Git. Это будет практическое руководство. В этом руководстве предполагается, что в вашей системе установлен Git.
Начальная конфигурация пользователя Git
Сначала нам нужно настроить параметры для пользователя Git. Мы можем сделать эти настройки для всех репозиториев, присутствующих в текущей системе, или для конкретного репозитория. Давайте разберемся с этим на примере:
Личность пользователя
В Git мы можем указать личность пользователя, указав его имя и адрес электронной почты. Эта информация будет использоваться во время каждой операции фиксации. Выполните следующую команду в терминале, чтобы назначить идентификатор:
$ git config --global user.name "Infoit User" $ git config --global user.email "infoituser@infoit.com.ua"
Editor
Этот параметр настраивает редактор, который будет использоваться при отправке сообщения о фиксации:
$ git config --global core.editor vim
Compression
Этот параметр настраивает уровень сжатия, который будет использоваться. Допустимый диапазон сжатия — от -1 до 9. Значение -1 указывает на сжатие zlib и является уровнем сжатия по умолчанию. Значение 0 означает отсутствие сжатия, от 1 до 9 — это различные компромиссы между скоростью и размером, 9 — самый медленный.
$ git config --global core.compression 2
Diff tool
Этот параметр настраивает инструмент просмотра различий. Например, команда ниже настраивает vimdiff как инструмент сравнения:
$ git config --global diff.tool vimdiff
В приведенных выше командах мы везде использовали параметр –global , который сделает эту конфигурацию глобальной. Это означает, что одна и та же конфигурация будет применена ко всем репозиториям, присутствующим в текущей системе. Чтобы сделать репозиторий конфигурации специфичным, просто удалите опцию –global.
Конфигурация списка
Чтобы просмотреть конфигурацию Git, выполните в терминале команду ниже:
$ git config -l
Эта команда сгенерирует следующий вывод:
core.repositoryformatversion=0 core.filemode=true core.bare=false core.logallrefupdates=true core.editor=vim core.compression=2 user.name=Infoit User user.email=infoituser@infoit.com.ua diff.tool=vimdiff
Репозитории Git
Репозиторий — это место, где хранится исходный код. Мы можем создать новый репозиторий или использовать существующий репозиторий. Чтобы создать новый пустой репозиторий, выполните команду ниже:
$ mkdir my-repo.git $ cd my-repo.git $ git init --bare Initialized empty Git repository in my-repo.git
Этот метод будет полезен, когда вы начинаете новый проект. Другой способ — использовать существующий репозиторий. Такой репозиторий размещается на удаленном сервере, таком как GitHub. Чтобы загрузить удаленный репозиторий, используйте команду clone следующим образом:
$ git clone https://github.com/infoituser/my-repo.git
В приведенной выше команде последний аргумент — это путь к удаленному репозиторию.
Рабочий процесс Git
В этом разделе мы обсудим рабочий процесс git.
Ввести новые изменения
Первый шаг — внести новые изменения. Это может быть добавление нового файла или обновление существующих файлов. Давайте создадим новый файл и изменим существующий файл
$ touch AUTHORS # Create new file $ echo "New Contents" >> README # Update existing file
Проверить статус репозитория
Git — это система отслеживания контента, она определяет два вышеупомянутых изменения. Проверим статус репозитория:
$ git status -s M README ?? AUTHORS
В приведенном выше выводе буква M появляется перед README, что указывает на то, что существующий файл был изменен. В то время как ?? появляется перед AUTHORS, что указывает на то, что это новый файл, и Git не знает об этом, поэтому такой файл называется неотслеживаемым файлом.
Добавить файл в набор изменений
Давайте проинструктируем Git отслеживать этот новый файл. Мы можем добиться этого с помощью команды добавления. Эта операция начнет отслеживать изменения, внесенные в этот файл.
$ git add AUTHORS
Давайте сейчас проверим статус репозитория:
$ git status -s A AUTHORS M README
Вышеупомянутые выходные данные показывают A перед AUTHORS, что указывает на то, что этот файл был недавно добавлен в Git. С помощью этой команды мы можем добавить любое количество файлов.
Удалить файл из набора изменений
Давайте проинструктируем Git отследить этот недавно добавленный файл. Мы можем добиться этого с помощью команды сброса. Эта операция удалит файл из набора изменений.
$ git reset AUTHORS $ git status -s M README ?? AUTHORS
Приведенные выше выходные данные показывают, что файл AUTHORS не отслеживается Git.
Зафиксировать изменения
В Git файлы, которые являются частью набора изменений, образуют фиксацию. Каждая фиксация получит уникальный идентификатор. Давайте сначала создадим ревизию
$ git add AUTHORS $ git add README
Теперь давайте зафиксируем изменения в локальном репозитории с сообщением о фиксации. В приведенной ниже команде -m аргумент указывает сообщение фиксации.
$ git commit -m "Updated README and added AUTHORS"
Когда вы выполните указанную выше команду, она выдаст следующий вывод:
[master 0b124eb] Updated README and added AUTHORS 2 files changed, 1 insertion(+) create mode 100644 AUTHORS
Проверить изменения
В этом разделе мы обсудим команды, которые позволят нам просматривать изменения в репозитории.
Просмотр журнала фиксации
Репозиторий может содержать несколько коммитов от нескольких авторов. Мы можем использовать команду log для просмотра всех доступных коммитов:
$ git log
Когда вы выполните указанную выше команду, она выдаст следующий вывод:
commit 0b124eb6d0109d837f6f9396c9937406abd3f456 (HEAD -> master) Author: Infoit User <infoituser@infoit.com.ua> Date: Fri Jul 27 21:06:55 2018 +0530 Updated README and added AUTHORS
Это коммит, который мы создали ранее. В приведенной выше команде:
- Шестнадцатеричный идентификатор представляет собой идентификатор фиксации.
- Раздел коммита «Автор» показывает подробную информацию о том, кто внес эти изменения.
- Раздел даты показывает дату и метку времени фиксации
Просмотр короткого журнала фиксации
Вышеупомянутая команда покажет подробную информацию о каждой фиксации. Чтобы просмотреть краткое описание каждой фиксации, используйте параметр –oneline следующим образом:
$ git log --oneline
Когда вы выполните указанную выше команду, она выдаст следующий вывод:
0b124eb (HEAD -> master) Updated README and added AUTHORS
Просмотр фиксации
Идентификатор фиксации связан с каждым набором изменений. Мы можем использовать этот идентификатор с командой show для просмотра содержимого фиксации.
$ git show 0b124eb6d0109d837f6f9396c9937406abd3f456
Когда вы выполните указанную выше команду, она выдаст следующий вывод:
commit 0b124eb6d0109d837f6f9396c9937406abd3f456 (HEAD -> master) Author: Infoit User <infoituser@infoit.com.ua> Date: Fri Jul 27 21:06:55 2018 +0530 Updated README and added AUTHORS diff --git a/AUTHORS b/AUTHORS new file mode 100644 index 0000000..e69de29 diff --git a/README b/README index 980a0d5..5680123 100644 --- a/README +++ b/README @@ -1 +1,2 @@ Hello World! +New Contents
Посмотреть разницу
Команда Diff позволяет нам просматривать изменения перед созданием набора изменений. Команда Diff показывает различия между репозиторием и локальной рабочей областью. Давайте модифицируем файл README и рассмотрим различия
$ echo "Generating diff" >> README $ git diff diff --git a/README b/README index 5680123..3158230 100644 --- a/README +++ b/README @@ -1,2 +1,3 @@ Hello World! New Contents +Generating diff
В приведенной выше команде:
- знак + указывает на изменения, которые добавляются в файл
- — знак указывает на изменения, которые удалены из файла
Работа с удаленными репозиториями
Пока мы работали только с локальным репозиторием. Другие разработчики не могут использовать внесенные нами изменения, поскольку они являются локальными. Следовательно, совместная работа кода невозможна. В этом разделе будут описаны команды, которые позволят нам взаимодействовать с удаленными репозиториями.
Опубликовать изменения в удаленном репозитории
Мы можем публиковать локальные изменения в удаленном репозитории, чтобы другие разработчики могли его использовать. Перед публикацией изменений мы должны создать набор изменений и локальную фиксацию. Мы можем опубликовать изменения с помощью команды push следующим образом:
$ git push
Эта команда копирует изменения из локальной рабочей области в удаленный репозиторий. В Git эта операция называется операцией push.
Синхронизировать рабочее пространство с удаленным репозиторием
Многие разработчики могут публиковать изменения своего рабочего пространства в удаленном репозитории. Git позволяет нам загружать эти изменения и синхронизировать рабочее пространство с репозиторием. Мы можем добиться этого с помощью команды pull:
$ git pull
В Git эта операция называется операцией извлечения.
Разные команды Git
В этом разделе обсуждаются различные команды Git, которые будут полезны для выполнения повседневных задач:
Изменить последнюю фиксацию
Git позволяет нам изменять последний коммит. Мы можем использовать этот метод, чтобы избежать создания новой фиксации. В основном он используется для изменения предыдущего сообщения фиксации. Чтобы изменить последнюю фиксацию, используйте параметр –amend следующим образом:
$ echo "Yet another new change" >> README $ git add README $ git commit --amend -m "This is amended commit
Теперь давайте проверим журнал фиксации:
$ git log commit 8bf67aec1d1de87f03ab6aae93940b17826fde1c (HEAD -> master) Author: Infoit User <infoituser@infoit.com.ua> Date: Fri Jul 27 21:54:55 2018 +0530 This is amended commit
Если вы внимательно посмотрите на вывод выше, то мы сможем увидеть новое сообщение фиксации, его идентификатор и новую временную метку.
Удалить неотслеживаемые файлы
Не отслеживаемые файлы — это те, которые неизвестны Git. Мы можем удалить все неотслеживаемые файлы с помощью команды clean.
Давайте создадим несколько неотслеживаемых файлов:
$ touch delete-me-1 delete-me-2 delete-me-3
Чтобы удалить все указанные выше неотслеживаемые файлы, используйте команду clean с параметром -f следующим образом:
$ git clean -f Removing delete-me-1 Removing delete-me-2 Removing delete-me-3
Обратите внимание, что эта команда удалит файлы безвозвратно, поэтому используйте ее с осторожностью.
Просмотр коммитов конкретного автора
Если мы используем команду log, то она показывает коммиты всех авторов. Для просмотра коммитов конкретного автора используйте флаг –author следующим образом:
$ git log --author=Infoit
Когда вы выполните указанную выше команду, она отобразит все коммиты авторов Infoit следующим образом:
commit 8bf67aec1d1de87f03ab6aae93940b17826fde1c (HEAD -> master) Author: Infoit User <infoituser@infoit.com.ua> Date: Fri Jul 27 21:54:55 2018 +0530 This is amended commit
Просмотр истории каждого файла построчно
Чтобы просмотреть историю построчно, мы можем использовать команду blame.
$ git blame README
Когда вы выполните указанную выше команду, она выдаст следующий вывод:
76294131 (Infoit User 2018-07-27 21:12:11 -0700 1) Hello World! 8bf67aec (Infoit User 2018-07-27 21:54:55 +0530 2) New changes 8bf67aec (Infoit User 2018-07-27 21:54:55 +0530 3) Yet another changes
В приведенной выше команде:
- Первый столбец указывает идентификатор фиксации
- Второй столбец указывает автора
- В третьем столбце указаны временные метки.
- Последний столбец указывает номер строки и содержимое файла.
Просмотр различий из области подготовки
Когда вы создаете набор изменений с помощью команды добавления, файл логически перемещается в промежуточную область. Давайте посмотрим на этом примере:
$ echo "Let us demonstrate staging area" >> README $ git add README $ git diff
Вышеупомянутая команда не покажет никакой разницы, поскольку файл перемещается в промежуточную область. Давайте использовать –staged операцию для просмотра различий:
$ git diff --staged diff --git a/README b/README index 74729a2..8bc5ffd 100644 --- a/README +++ b/README @@ -1,3 +1,4 @@ Hello World! New changes Yet another changes +Let us demonstrate staging area
Заключение
В этом руководстве мы обсудили основные операции Git на простых примерах. Это руководство — хорошая отправная точка для новичков в Git.