Работа с git для начинающих
Наверное не все знают, что такое
git и с чем его едят.
git – это распределенная система контроля версий. Основные ее преимущества, лично для меня, распределенность и использование бинарных дифов, что упрощает работу с системой нескольких пользователей одновременно, и упрощает хранение бинарных файлов, ресурсов.
git используется во многих крупных проектах: Linux kernel, KDE и многих других.
Изначально
git написал
Linus Torvalds.
Генерация ключа:
Для того чтобы вы имели доступ до репозитария, необходимо сгенерировать ключ.
Для этого в консоли
git пишем:
Код:
$ ssh-keygen -t rsa -C "tekkub@gmail.com" - Пишем это в консоле git (только подставить свой адресс)
Generating public/private rsa key pair.
Enter file in which to save the key (/c/Users/Tekkub/.ssh/id_rsa): - просто жмем ентер
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /c/Users/Tekkub/.ssh/id_rsa.
Your public key has been saved in /c/Users/Tekkub/.ssh/id_rsa.pub.
The key fingerprint is:
e8:ae:60:8f:38:c2:98:1d:6d:84:60:8c:9e:dd:47:81 tekkub@gmail.com
и все, далее лезим в папку с профилем там будет папка
.ssh находим в ней файл
id_rsa.pub и его содержимое вставляем в ... как показано на рисунке
Создание нового репозитория
Создание нового репозитория – это наверное первая из задач, с которой сталкивается любой разработчик. К данной проблеме есть несколько подходов.
Во-первых, можно использовать только локальный репозиторий, но смысла особого я в этом не вижу.
Во-вторых, можно создать открытый репозиторий, с которым смогут работать другие люди. Рассмотрим этот вариант. Предположим, что у вас есть сервер
example.com и ваша рабочая машинка.
Для начала вам необходимо установить
git. Сделать это можно как вручную скомпилировав его из исходных кодов, так и установив с помощью менеджера пакетов. Будем считать что с этой операцией вы уже справились.
Далее вам надо создать репозиторий. Предположим что вы будете хранить все
git-репозитории в
/var/git:
Код:
cd /var/git
mkdir example.git
git init --bare
Теперь у вас есть пустой
git-репозиторий. Это, собственно говоря, все команды, которые требуется выполнить на сервере.
Теперь идем на вашу рабочую машину и пишем:
Код:
git init
git remote add origin ssh://username@example.com/var/git/example.git
touch changelog
git add changelog
git commit -a -m "Initital commit"
git push origin master
Этими командами мы создали новый репозиторий, связали его с основной веткой example.git, закомитили туда файл changelog и отослали это на сервер. В результате выполнения этих команд, вы должны увидеть чтото примерно такое:
Код:
Counting objects: 3, done.
Writing objects: 100% (3/3), 224 bytes, done.
Total 3 (delta 0), reused 0 (delta 0)
To ssh://username@example.git/var/git/example.git
* [new branch] master -> master
Получение и оправка репозитория
Разумеется, после создания репозитория разумно узнать “а как же получить эти данные на свой компьютер?”.
Для данной операции используется команда
clone. Она создает полную копию удаленного репозитория у вас. Под полной копией понимается именно полная копия, со всеми ветками, удаленными файлами и т.д.
Код:
git clone ssh://username@example.com/var/git/имя-репозитория
Разумеется,
/var/git может меняться, в зависимости от того, где располагаются файлы данного репозитория на удаленной машине.
Обновление данных
С таким локальным репозиторием можно работать долгое время, однако, когда-то у вас все же возникнет необходимость передать сделанные вами изменения в удаленный репозиторий, чтобы результатами вашего труда могли воспользоваться другие участники разработки, и получить из удаленного репозитория новую версию. Для этого служат команды
pull и
push.
Данная команда получает обновленную версию из удаленного репозитория, при этом она проверяет на наличие различных проблем при объединении репозиториев и сообщает об этом.
Данная команда целиком передает все сделанные вами изменения, уже закомиченные в локальный репозиторий, в удаленный репозиторий. Для передачи тегов необходимо использовать аргумент
–tags
Базовые операции
Для базовой работы с любой системой контроля версий требуется не особенно большой набор операций: добавление файла в репозиторий, удаление файла из репозитория, комит изменений в репозиторий, отмена незакомиченных изменений и получение списка изменений.
Добавление списка файлов в комит:
Код:
git add file1 file2 ... fileN
Добавление всех недобавленных файлов в комит:
Удаление файла из комита:
Код:
git rm file1 file2 ... fileN
Удаление файла из комита и с жесткого диска:
Код:
git rm -f file1 file2 ... fileN
Комит в локальный репозиторий (надо отметить, что в таком случае закомитятся только файлы, которые были обработаны с помощью
git add/rm):
Комит всех изменений в локальный репозиторий:
Отмена всех изменений, сделанных в дереве, до состояния, которое было при последнем комите в локальный репозиторий( очень опасная команда, подумайте прежде чем пользоваться ею):
Создание дифа относительно последнего комита:
Использование веток
Рано или поздно в любом проекте возникает ситуация, когда требуется заморозить изменения, но продолжать работать, а на замороженные изменения накладывать только баг-фиксы. Для этой цели служат ветви (
branch)
В гите можно создать ветку от любого места.
Создание удаленной ветки дело не хитрое, но в первый раз не так просто сделать все правильно.
Весь процесс делиться на несколько этапов
* создание удаленной ветки
* создание аналогичной локальной ветки
* переключение на созданную ветку
Процесс создания ветки на удаленном сервере
1. Создание удаленной ветки
Код:
git push origin origin:refs/heads/new_branch
Можно проверить, все ли верно
Проверяем, создана ли удаленная ветка
2. Создаем локальную ветку, и закрепляем ее за удаленной
Код:
git checkout --track -b new_branch origin/new_branch
Теперь
pull будет закреплен за новой веткой
Если вы совершили ошибку, то удалить ветку на сервере можно вот так
Код:
git push origin :heads/new_branch
Очень похоже, но лучше не путать.
Для открытия и закрепление новой ветки с другого места нужно выполнить два шага
1. Открыть удаленные ветки
2. Сделать
checkout
Код:
git checkout --track -b new_branch origin/new_branch
Работа с тегами
Как правило, кроме веток разработчики используют теги – чтобы запомнить состояние кода в какой-то момент. Тег – это своеобразный слепок, точно идентифицирующий состояние кода. Гит умеет работать с подписанными
GPG тегами и с неподписанными. Здесь я рассмотрю только неподписанные теги.
Для создания такого тега необходимо выполнить команду:
Чтобы убрать тег необходимо выполнить:
Код:
git tag -d <tag name>
Для того, чтобы тег стал виден всем, необходимо отправить его в удаленный репозиторий:
Чтобы получить версию с конкретного тега необходимо создать от него локальную ветку и расчекаутить эту ветку:
Код:
git fetch origin tag <tag_name>
git branch <branch_name> <tag_name>
git checkout <branch_name>
Разумеется, в будущем эту ветку можно будет сделать глобальной и выслать в удаленной репозиторий.
Настройка git
Для ускорения некоторых операций и увеличения удобства работы можно провести пару настроек:
Настройка цветного вывода:
git config --global color.ui "auto"
Настройка имени пользователя и почтового адреса (между прочим, это хороший тон):
Код:
git config user.name "FirstName LastName"
git config user.email "user@example.com"
Ускоряем дифы и отменяем ограничение на количество потоков упаковки при
push:
Код:
git config --global diff.renamelimit "0"
git config --global pack.threads "0"
Вместо заключения
Git – очень мощная и удобная система контроля версий. Для нее существует несколько
GUI утилит, которые могут облегчить работу, несколько веб интерфейсов для мониторинга текущего состояния. В последнее время все большее кол-во проектов переходят на использование
git, и это показатель того, что
git успешно развивается и соответствует последним требованиям в области систем контроля версий.
Большое кол-во документации по использованию
git можно найти в сети, в том числе и на
официальном сайте
Продолжение следует...
Источник _http://blog.nsws.ru/rabota-s-git-dlya-nachinayushhix.html