Краткое руководство по Git

Клонируем репозиторий:

$git clone gituser@server.name:repo.git

или, если хотим клонировать в папку со своим названием (а не repo):

$git clone gituser@server.name:repo.git folder_name

Переходим в папку с копией репозитория и создаем новую ветку:

$git checkout -b dev

где dev – название ветки

Работаем с проектом, тестируем. Индексируем и коммитим:

$git add .
$git commit -m 'Commit comment'
Коммиты желательно чтобы были небольшими.

Посмотреть историю коммитов:

$git log

Вывод конечно может занять не один экран. Чтобы увеличить читабельность можно создать алиас для логов, добавив следующее в файл .gitconfig в вашем $HOME каталоге:

[alias]

hist = log --pretty=format:\"%h %ad | %s%d [%an]\" --graph --date=short

Подробнее про создание алиасов

Теперь можно смотреть историю в компактном виде:

$git hist

Продолжаем работать с проектом, тестируем, индексируем и коммитим.

Как только закончили с поставленной микрозадачей, то можно пометить меткой (тэгом). Например, для того, чтобы обозначить версию проекта:

$git tag ver.1.3

Чтобы удалить метку пишем

$git tag -d ver.1.3

Как только захотели поделиться с остальными своими наработками выполняем следующие шаги:
1. Вытягиваем последнюю версию проекта (на случай обновления проекта другими разработчиками)

$git pull

2. Объединяем свои наработки с основной веткой

$git checkout master
$git merge dev

(dev – название нашей ветки)

Если ветка больше не нужна – удаляем:

$git branch -d dev

3. Заливаем свои обновления

$git push

Чтобы залить вместе со своими тэгами:

$git push --tags

Иногда возможны конфликты. Могут возникнуть как на стадии добавления коммита, так и на стадии слияния (объединения) веток. Их придется разруливать самим и руками. Почитать про это можно тут или тут

Несколько рекомендаций:
1. Коммиты желательно делать небольшими. Чтобы было проще вернуться на шаг-несколько назад.
2. Отдельная мысль == отдельная ветка. Если необходимо срочно исправить ошибку не связанную с текущей работой, то лучше создать новую ветку.
3. Комменты к коммитам необходимо писать осмысленные.

Ссылки по теме:

Использование Git под Windows

Мини мануал на тему установки и использования Git под Windows.

1. Скачиваем Git отсюда. Я скачал последнюю на данный момент версию (1.8.0). Вот прямая ссылка: http://msysgit.googlecode.com/files/Git-1.8.0-preview20121022.exe

2. Устанавливаем. В процессе установки установщик (сорри за тафталогию) спросит тип запуска Git:

  • Git bash only: git ставится и вызывается командой контекстного меню “Git bash here”/”Git gui here”
  • Run from the Windows command prompt: Устанавливает Git и прописывает путь к консольной версии в PATH. Команду ‘Git Bash here’ всё равно можно использовать.
  • Run Git and tools from Windows Command Prompt: то же что предыдущий вариант, но дополнительно прописывает в Windows путь к различным Unix-утилитам типа find и sort. Git предупреждает нас что при этом вместо windows-приложений с соответствующими именами будут вызываться unix-аналоги

Я выбрал первый пункт. Можно выбрать второй. Третий не рекомендую.

3. Запускаем консоль Git

4. В консоли Git генерируем ssh ключ:

$ssh-keygen -t rsa

Под виндой, по неведомым мне причинам, работал только ключ с именем по умолчанию. Так что соглашаемся с тем что предлагает софтина и дважды вводим пароль к ключу. Ключи будут лежать в папке вида C:\Users\username\.ssh\ и называться id_rsa и id_rsa.pub соответственно. Публичный ключ (id_rsa.pub) нужно передать своему администратору, чтобы он добавил его в Gitolite и дал вам необходимые права.

5. Теперь можно запускать Git Bash, переходить в нужную папку и работать с Git также как и в Linux. Правда при каждом запросе к серверу будет просить пароль от ключа.

Можно попробовать сделать чтобы не просил, но у меня не было возможности протестировать. Так что оставляем это как “домашнее задание”.

Ссылки по теме:

Поднимаем Git на сервере

Будем считать что ОС у нас Debian/Ubuntu; cервер server.name; пользователь на сервере уже создан. Имя его gituser. Домашняя директория – /home/gituser.

Для начала создадим ssh ключ (на клиентской машине). Он понадобится нам в дальнейшем.

$ssh-keygen -t rsa

Попросят ввести путь и имя, куда и с каким названием сгенерируется пара ключей (приватный и публичный). Можно оставить по умолчанию, я же введу другое имя (отметил жирным):

Enter file in which to save the key (/userhome/.ssh/id_dsa):

/userhome/.ssh/developer1

Потом попросят дважды ввести passphrase (пароль). После создания ключей закинем публичный на наш сервер:

$scp ~/.ssh/developer1.pub gituser@server.name:~/.ssh/developer1.pub

Заходим на сервер под нашим пользователем (gituser).

Устанавливаем Git:

$sudo apt-get install git-core

Устанавливаем Gitolite:

$git clone git://github.com/sitaramc/gitolite
 
$gitolite/install -ln

Добавляем публичный ключ в Gitolite (если еще нет публичного ключа, то прочитайте выше как его создать):

$gitolite/src/gitolite setup -pk ~/.ssh/developer1.pub

Репозитории Gitolite хранит в поддиректории repositories домашней папки юзера gituser. Все настройки и ключи хранятся в отдельном репозитории gitolite-admin.git.

Создадим его локальную копию на клиентской машине:

$git clone gituser@server.name:gitolite-admin.git

Чтобы добавить нового пользователя просто записываем его публичный ключ в папку keydir. Имя ключа до окончания .pub будет являться именем пользователя в системе Gitolite. Или добавляем на сервере:

$gitolite/src/gitolite setup -pk ~/.ssh/developer2.pub

 

Для добавления репозитория и/или измениния права редактируем файл conf/gitolite.conf. Затем применяем и отправляем все изменения:

$git add .
 
$git commit -m 'Added new repository and new users'
 
$git push origin master

Можно сгруппировать пользователей или репозитории для удобства:

@repo_group1 = repo_1 repo_2

@repo_group2 = repo_3

@repo_group2 = repo_4

 

@dev_group1 = developer1 developer2

@dev_group1 = developer3 developer4

@dev_group2 = developer5

@all_dev = @dev_group1 @dev_group2 developer6

 

repo @repo_group2

RW+ = @all_dev

repo @repo_group1 repo_5

RW+ = @dev_group1 developer7

Подробнее о конфигурационном файле Gitolite можно прочитать на официальной странице.

Ссылки по теме: