Показать сообщение отдельно
Старый 30.04.2010, 08:51   #1
Konctantin
RuDB Dev
 
Аватар для Konctantin
 
Регистрация: 01.02.2010
Адрес: localhost
Сообщений: 592
Сказал(а) спасибо: 323
Поблагодарили 283 раз(а) в 122 сообщениях
Записей в дневнике: 2
Konctantin Это имя известно всемKonctantin Это имя известно всемKonctantin Это имя известно всемKonctantin Это имя известно всемKonctantin Это имя известно всемKonctantin Это имя известно всем
По умолчанию Git для новичков (статья)

Работа с 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.

Код:
git pull
Данная команда получает обновленную версию из удаленного репозитория, при этом она проверяет на наличие различных проблем при объединении репозиториев и сообщает об этом.

Код:
git push
Данная команда целиком передает все сделанные вами изменения, уже закомиченные в локальный репозиторий, в удаленный репозиторий. Для передачи тегов необходимо использовать аргумент –tags

Код:
git push --tags
Базовые операции

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

Добавление списка файлов в комит:

Код:
 git add file1 file2 ... fileN
Добавление всех недобавленных файлов в комит:

Код:
git add -a
Удаление файла из комита:

Код:
 git rm file1 file2 ... fileN
Удаление файла из комита и с жесткого диска:

Код:
git rm -f file1 file2 ... fileN
Комит в локальный репозиторий (надо отметить, что в таком случае закомитятся только файлы, которые были обработаны с помощью git add/rm):

Код:
git commit
Комит всех изменений в локальный репозиторий:

Код:
git commit -a
Отмена всех изменений, сделанных в дереве, до состояния, которое было при последнем комите в локальный репозиторий( очень опасная команда, подумайте прежде чем пользоваться ею):

Код:
git reset --hard
Создание дифа относительно последнего комита:

Код:
git diff
Использование веток

Рано или поздно в любом проекте возникает ситуация, когда требуется заморозить изменения, но продолжать работать, а на замороженные изменения накладывать только баг-фиксы. Для этой цели служат ветви (branch)

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

Весь процесс делиться на несколько этапов

* создание удаленной ветки
* создание аналогичной локальной ветки
* переключение на созданную ветку

Процесс создания ветки на удаленном сервере

1. Создание удаленной ветки
Код:
   git push origin origin:refs/heads/new_branch
Можно проверить, все ли верно
Код:
 git pull origin
Проверяем, создана ли удаленная ветка
Код:
git branch -r
2. Создаем локальную ветку, и закрепляем ее за удаленной
Код:
git checkout --track -b new_branch origin/new_branch
Теперь pull будет закреплен за новой веткой
Код:
git pull
Если вы совершили ошибку, то удалить ветку на сервере можно вот так
Код:
git push origin :heads/new_branch
Очень похоже, но лучше не путать.

Для открытия и закрепление новой ветки с другого места нужно выполнить два шага

1. Открыть удаленные ветки
Код:
git branch -r
2. Сделать checkout
Код:
git checkout --track -b new_branch origin/new_branch
Работа с тегами
Как правило, кроме веток разработчики используют теги – чтобы запомнить состояние кода в какой-то момент. Тег – это своеобразный слепок, точно идентифицирующий состояние кода. Гит умеет работать с подписанными GPG тегами и с неподписанными. Здесь я рассмотрю только неподписанные теги.

Для создания такого тега необходимо выполнить команду:

Код:
git tag <tag name>
Чтобы убрать тег необходимо выполнить:

Код:
git tag -d <tag name>
Для того, чтобы тег стал виден всем, необходимо отправить его в удаленный репозиторий:

Код:
git push --tags
Чтобы получить версию с конкретного тега необходимо создать от него локальную ветку и расчекаутить эту ветку:

Код:
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
__________________

Последний раз редактировалось Konctantin; 07.06.2010 в 22:45.
Konctantin вне форума   Ответить с цитированием
18 пользователя(ей) сказали cпасибо:
Blacksmither (12.12.2011), BloodWarrior (27.03.2011), Fear (18.07.2010), Feel the Power (07.06.2010), Hantet (26.05.2010), KiriX (01.05.2010), Limpnau (08.06.2010), lina (15.01.2011), lovepsone (30.04.2010), MaxXx2021 (10.06.2010), Mayss (22.07.2010), Medivh (07.06.2010), Neggod (30.04.2010), PSZ (05.05.2010), srv38 (01.05.2010), YuruY (26.03.2011)