Работа с Git

Работа с Git

Что такое Git и для чего он нужен?

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

Установка Git

Linux
Установка производится при помощи пакетного менеджера дистрибутива. Например, для ОС, основанных на Debian (e.g. Ubuntu, Mint), достаточно ввести в терминале следующее:
sudo apt install git
sudo apt-get install git

Windows
Для начала скачиваем установочный файл по ссылке и запускаем. Установка предельно простая, все этапы установки представлены на скриншотах ниже, просто сверяем пункты.

git-install1.png


Здесь можете выбрать текстовый редактор, который будет использоваться по умолчанию Git'ом. В принципе, можете оставить vim по умолчанию, это вам не понадобится.
git-install2.png


1549819050958.png


1549819077429.png


1549819110373.png


1549819125648.png


1549819164996.png


Проверка установки
Теперь можете открыть командную строку (win + R -> cmd) и проверить, установился ли Git.
Введем git --version.
1549819627224.png

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

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

Первоначальная настройка

Сперва необходимо произвести минимальные настройки. Введем в консоли следующие команды, подставляя свои данные:
git config --global user.name "Your Name"
git config --global user.email [email protected]
Этими двумя командами мы задали параметры имени и электронной почты. По сути, это необходимо для того, чтобы в будущем знать, кто какие действия совершил. Удобно при работе в команде.

Тестовый репозиторий

Git создает скрытую папку .git в директории проекта, то есть там, где он был инициализирован. Для начала мы попробуем создать новую папку с вымышленным проектом в любом удобном вам месте.
mkdir git-tutorial
cd git-tutorial
git init
Думаю, не нужно объяснять первые две команды. git init производит инициализацию вашего репозитория и создает папку .git, о которой упоминалось выше.
В случае успеха вы получите такое сообщение:
1549820533325.png


Основы работы с Git
Давайте создадим парочку текстовых файлов с каким-нибудь содержимым, представим что это и есть наш проект. Можете создать их через файловый менеджер, а можете через консоль.
echo This is the first file >> 1.txt
echo And this is the second file >> 2.txt


Отслеживаемые файлы
Введите команду git status - она выводит список файлов, которые отслеживаются в этом репозитории.
В ответ вы получите:
1549821317574.png

Git говорит нам, что отслеживаемых файлов нет. Попробуем их добавить.

Команда git add
"Введите git add <file>" - дает нам подсказку git. Добавим файл 1.txt для отслеживания:
git add 1.txt (команда ничего не выводит - так и должно быть).
Окей, файл добавлен. Теперь снова выполним git status и увидим следующее:
1549821717980.png

Появился новый файл 1.txt, теперь git следит за его изменениями и готов для фиксации, о которой немного позже.
Прекратим отслеживание командной git rm --cached 1.txt

Теперь представим, что вам нужно добавить все файлы, которые находятся в текущем репозитории. Те, кто уже имеют небольшой опыт работы с командной строкой и терминалом, догадались, как это можно реализовать.
git add . - все файлы добавлены, проверяем командой git status
Однако, удалить все файлы таким образом не получится. Необходимо использовать ключ -r, который указывает на рекурсивное удаление: git rm --cached -r .

Первый коммит
Коммит - это фиксация текущего состояния отслеживаемых файлов. То есть, сделав коммит, вы позже сможете вернуться к такому состоянию файлов, в котором они находятся сейчас. Очень полезная штука.
Итак, добавляем в список отслеживаемых все файлы, затем вводим git commit -m "first commit" -a
-m "first commit" - это описание для нашего коммита. Рекомендуется делать коммиты часто, описывая все изменения.
-a - указывает, что необходимо закоммитить все файлы. В большинстве случаев используется только при первом коммите; в последующих необходимо передавать вместо -a список файлов или директорий. Например:
git commit -m "Changed some files" 1.txt
1549822500666.png


Удаленные репозитории
Сейчас ваш коммит хранится на вашем жестком диске, а именно в папке .git. Для того, чтобы контролировать версии, этого вполне достаточно. Но зачастую требуется сохранить его где-нибудь удаленно, чтобы поделиться с другими разработчиками или сохранить для себя на всякий случай. Существует два условно бесплатных и самых популярных хостинга git-репозиториев: GitHub и BitBucket.
На GitHub'е ваш репозиторий смогут просматривать все. Можно, конечно, заплатить за приватный репозиторий, но, если вам необходимо, чтобы доступ к нему был только у вас, то лучше воспользоваться BitBucket бесплатно.

GitHub
Для начала, разумеется, необходимо зарегистрироваться, процесс не сложный. Далее на главной странице видим ссылку create a repository, переходим по ней.
1549824110672.png
Здесь мы вводим название нашего репозитория, ниже описание (по желанию), тип репозитория оставляем Public. Ниже мы можем выбрать, какие файлы будут созданы вместе с репозиторием:
ReadMe - файл с инструкцией/дополнительной информацией/чем-то еще. Его содержимое отображается на главной странице репозитория.
.gitignore - список файлы, которые будут игнорироваться git'ом.
Ознакомиться с лицензиями можно здесь.

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

После регистрации на главной странице будет кнопка Create repository, перейдя по ней видим похожий интерфейс, как и на GitHub'е.
1549824780032.png

Описание репозитория можно указать, открыв расширенные настройки (advanced settings).

Синхронизация Git с удаленным репозиторием
Для начала нужно получить ссылку на ваш репозиторий.

Для GitHub:
Ссылка находится находится на странице вашего репозитория.
1549825312459.png

Для BitBucket:
На странице вашего репозитория есть кнопка Clone.
1549825675230.png

Вам необходима только ссылка, то есть без git clone
1549825774585.png


Добавление удаленного репозитория и первый push

Вернемся в командную строку и выполним git remote add origin <link>, где <link> - ссылка на ваш репозиторий. origin - название репозитория, принято делать его именно таким.

В удаленном репозитории, возможно, был автоматически создан файл README.md, в таком случае, если мы попытаемся отправить push, будет ошибка, потому что в нашем локальном репозитории его нет.
Команда git pull служит для того, чтобы получить все изменения из удаленного репозитория. К примеру, если проект разрабатывает несколько человек и один из них сделал изменения и отправил их в удаленный репозиторий, то остальные должны получить эти изменения к себе на компьютер, выполнив команду git pull.
Так мы и сделаем, пишем в консоли git pull origin master --allow-unrelated-histrories. master - это ветка вашего репозитория, по умолчанию имеет именно такое название, на первых порах вам этого хватит. --allow-unrelated-histrories используется при первом git pull, в дальнейшем это, как правило, писать необязательно.

Теперь в нашей локальной папке появился файл README.md (если он был создан автоматически в репозитории), попробуем отправить наши 2 текстовых файла на сервер. Это делается с помощью команды git push origin master.
git push отправляет в удаленный репозиторий последнее зафиксированное состояние файлов, то есть перед тем, как отправить новое изменение, вам нужно его установить командой git commit.

Заключение

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

git clone - сохранить копию любого репозитория из интернета в текущую папку.
git pull - получить изменения из удаленного репозитория.
git branch - управление ветками.
git checkout - переключение на другую ветку/возвращение файла к состоянию нужного коммита.
git merge - слияние веток.
git log - список всех коммитов с их идентификаторами.
git show - посмотреть, что изменилось в определенном коммите.
git diff - показывает разницу между промежутками двух коммитов.
Автор
link
Просмотры
4,536
Первый выпуск
Обновление
Оценка
4.20 звёзд 5 оценок

Другие ресурсы пользователя link

Последние рецензии

Для новичка (Меня) будет полезно
Полезный туториал.
Ну вот, наконец-то нормальные гайды подъехали! Только есть одно НО, слишком розово всё)
link
link
Я не гей, но цвет мне нравится) Спасибо за отзыв!
Отличный тутор на полезную тему. Жаль, не рассмотрено использование гуи-приложений и работы с ветками, а также как и зачем юзать гит когда команда больше одного человека
link
link
я планировал рассказать о ветках в какой-нибудь другой статье, чтобы не дать слишком много информации и не отпугнуть новичка от гита. Спасибо за отзыв.
Спасибо то что рассказал как устанавливать гит и заливать на него сурцы. Вообще для этого достаточно скачать Gihub Desktop, создать репу и нажать две кнопки: нажать кнопку commit а затем push.

Ты не рассказал того как и что можно делать с гитом. Очень обрадовался когда увидел что появился на русском гайд по юзу гита, но весьма расстроился, когда после прочтения(просматривания картинок) я не узнал ровным счетом ничего нового. Короче я до сих пор считаю что гит (гитхаб) надо использовать тупо для хранения исходников. Твой гайд не раскрыл других особенностей про которые мне говорили. До англеских гайдов руки пока не дошли.
Может я ленивый, но я оцениваю этот гайд так.
link
link
О каких особенностях ты хотел узнать? Я объяснил, для чего он нужен: работа в команде, откат к прежним версиям, удобное хранение. Что ты еще хочешь? Чтоб он пососал тебе? А еще, кажется, ты путаешь, что такое гит, а что такое гитхаб. Странно, что ты ничего нового не узнал. Спасибо за отзыв.
Сверху