Руководство по Git для начинающих

Руководство по Git для начинающих

 

Если вы какое-то время использовали GNU / Linux, скорее всего, вы слышали о git. Вам может быть интересно, что такое git и как его использовать? Git — детище Линуса Торвальдса, который разработал его как систему управления исходным кодом во время работы над ядром Linux.

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

Так что же такое git? Git — это конкретная реализация контроля версий, известная как распределенная система контроля версий, которая отслеживает изменения во времени в наборе файлов. Git позволяет отслеживать историю как локально, так и совместно. Преимущество совместного отслеживания истории заключается в том, что он документирует не только само изменение, но и то, кто, что, когда и почему стоит за этим изменением. При совместной работе изменения, внесенные разными участниками, впоследствии могут быть объединены в единый объем работы.

Что такое распределенная система контроля версий?

Так что же такое распределенная система контроля версий? Распределенные системы контроля версий не основаны на центральном сервере; на каждом компьютере есть полный репозиторий содержимого, хранящегося локально. Основным преимуществом этого является отсутствие единой точки отказа. Сервер можно использовать для сотрудничества с другими людьми, но если с ним случится что-то неожиданное, у каждого есть резервная копия данных, хранящихся локально (поскольку git не зависит от этого сервера), и ее можно легко восстановить на новом сервере. сервер.

Для кого предназначен git?

Я хочу подчеркнуть, что git может использоваться полностью локально отдельным человеком без необходимости подключаться к серверу или сотрудничать с другими, но это упрощает это при необходимости. Возможно, вы думаете что-то вроде «Вау, это звучит очень сложно. Наверное, действительно сложно начать работу с git ». Что ж, ошиблись бы вы!

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

Установка Git

Установить git в Gnu / Linux так же просто, как использовать диспетчер пакетов в командной строке, как если бы вы устанавливали любой другой пакет. Вот несколько примеров того, как это можно сделать в некоторых популярных дистрибутивах.

В системах на основе Debian и Debian, таких как Ubuntu, используйте apt.

$ sudo apt-get install git

В системах на базе Redhat Enterprise Linux и Redhat, таких как Fedora, используется yum.

$ sudo yum install git

(примечание: в Fedora версии 22 или новее замените yum на dnf)

$ sudo dnf install git

В Arch Linux используйте pacman

$ sudo pacman -S git

Настройка Git

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

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

$ git config --global user.email "youremail@emaildomain.com"
$ git config --global user.name "your username"

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

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

$ git config -l

Создание вашего первого проекта Git

Чтобы настроить проект git в первый раз, его необходимо инициализировать с помощью следующей команды:

$ git init projectname

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

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

$ cd projectname

Давайте воспользуемся командой touch, чтобы создать пустой файл, который мы будем использовать для создания простой программы hello world.

$ touch helloworld.c

Чтобы подготовить файлы в каталоге к передаче в систему контроля версий, мы используем git add. Это процесс, известный как постановка. Обратите внимание, мы можем использовать .для добавления всех файлов в каталог, но если мы хотим добавить только выбранные файлы или один файл, мы бы заменили .его желаемым именем (именами), как вы увидите в следующем примере.

$ git add .

Не бойтесь брать на себя обязательства

Фиксация выполняется для создания постоянной исторической записи о том, как именно файлы проекта существуют в данный момент времени. Мы выполняем фиксацию с использованием -mфлага, чтобы создать историческое сообщение для ясности.

Это сообщение обычно описывает, какие изменения были внесены или какое событие произошло, что заставило нас захотеть выполнить фиксацию в это время. Состояние содержимого во время этой фиксации (в данном случае пустой файл «hello world», который мы только что создали) можно будет просмотреть позже. Мы посмотрим, как это сделать дальше.

$ git commit -m "First commit of project, just an empty file"

Теперь давайте продолжим и создадим некоторый исходный код в этом пустом файле. Используя выбранный вами текстовый редактор, введите следующее (или скопируйте и вставьте) в файл helloworld.c и сохраните его.

#include 
int main(void)
{
    printf("Hello, World!\n");
    return 0;
}

Теперь, когда мы обновили наш проект, давайте продолжим и снова выполним git add и git commit.

$ git add helloworld.c
$ git commit -m "added source code to helloworld.c"

Чтение журналов

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

$ git log
Вы заметите, что каждая фиксация организована по собственному уникальному хэш-идентификатору SHA-1 и что автор, дата и комментарий фиксации представлены для каждой фиксации. Вы также заметите, что последняя фиксация HEADв выходных данных обозначается как the. HEADэто наша текущая позиция в проекте.

Чтобы просмотреть, какие изменения были внесены в данный коммит, просто введите команду git show с хеш-идентификатором в качестве аргумента. В нашем примере мы введем:

$ git show 6a9eb6c2d75b78febd03322a9435ac75c3bc278e

Что дает следующий результат.

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

Чтобы отменить изменения, которые мы сделали в нашем предыдущем примере, достаточно просто изменить команду HEADс git resetпомощью идентификатора фиксации, к которому мы хотим вернуться в качестве аргумента. Он --hardсообщает git, что мы хотим сбросить сам коммит, промежуточную область (файлы, которые мы готовили для фиксации с помощью git add) и рабочее дерево (локальные файлы, как они появляются в папке проекта на нашем диске).

$ git reset --hard 220e44bb924529c1f0bd4fe1b5b82b34b969cca7

После выполнения этой последней команды, исследуя содержимое

helloworld.c

file покажет, что он вернулся в то же состояние, в котором находился во время нашей первой фиксации; пустой файл.

Идите вперед и снова введите git log в терминал. Теперь вы увидите нашу первую фиксацию, но не нашу вторую фиксацию. Это потому, что git log показывает только текущую фиксацию и все ее родительские коммиты. Чтобы увидеть вторую фиксацию, которую мы сделали, введите git reflog. Git reflog отображает ссылки на все внесенные нами изменения.

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

Работа с удаленным репозиторием

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

Для целей этого руководства предположим, что у вас есть доступ к репозиторию GitHub и вы хотите обновить проект, который вы там размещаете.

Во-первых, нам нужно клонировать репозиторий локально с помощью команды git clone с URL-адресом проекта и сделать каталог клонированного проекта нашим текущим рабочим каталогом.

$ git clone project.url/projectname.git
$ cd projectname

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

$ git add .
$ git commit -m "implementing my changes to the project"

Затем мы должны отправить изменения, которые мы внесли локально, на сервер git. Следующая команда потребует от вас пройти аутентификацию с вашими учетными данными на удаленном сервере (в данном случае с вашим именем пользователя и паролем GitHub) перед отправкой изменений.

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

$ git push

Заключение

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