суббота, 28 апреля 2012 г.

Git быстрый старт

Настройка gitconfig
Перед началом работы с git необходимо указать имя и email автора локальных коммитов:
git config --global user.name "Name Surname"
git config --global user.email you@yourdomain.example.com

Информация об авторах коммитов отображается в истории репозитория по команде:
git log

Настройки для подсветки вывода команд git:
git config --global color.branch auto
git config --global color.diff auto
git config --global color.interactive auto
git config --global color.status auto

Настройка редактора для правки комментариев коммитов:
git config --global core.editor "mcedit"

Указанные выше команды генерируют файл .gitconfig в домашнем каталоге пользователя. Этот файл можно править вручную, без использования команды git config.

Примерный вид файла .gitconfig
[user]
    email = you@yourdomain.example.com
    name = Name Surname
[receive]
    denyCurrentBranch = ignore
[color]
  branch = auto
diff = auto
interactive = auto
status = auto
[core]
eol = lf
editor = mcedit

Отличия от svn
В отличие от системы контроля версий svn в git локальный и удаленный репозитории могут изменяться независимо. Другими словами операция "коммит" и публикация изменений представляют собой два отдельных действия.

В git один локальный репозиторий может взаимодействовать с несколькими удаленными репозиториями. Пользователь может публиковать и получать из них коммиты.

В git все игнорируемые файлы и каталоги указываются в файле с именем .gitignore. Этот файл должен лежать в корневом каталоге проекта (там же где и каталог .git).

Основные команды
Создание нового локального репозитория:
git init

Клонирование удаленного репозитория
git clone <адрес репозитория>

Работать с удаленным репозиторием можно через протоколы ssh или http. В случае использования http удаленный репозиторий будет доступен только для чтения.

Создание коммита на основе всех текущих изменений (аналог svn commit):
git commit -a

Все текущие изменения можно добавить в последний коммит:
git commit --amend -a

Добавления нового файла в репозиторий:
git add <имя файла>

Удалить файл из репозитория можно просто удалив файл и сделав коммит всех текущих изменений. Либо специальной коммандой:
git rm <имя файла>

Для публикации локальных коммитов  в удаленный репозиторий:
git push origin master

origin - имя удаленного репозитория (по-умолчания после клонирования репозиторий называется origin)
        master - имя ветки в которую публикуются коммиты (главная ветка называется master, аналог trunk в svn)

Посмотреть удаленные репозитории с которыми взаимодействует локальный репозиторий можно командой:
git remote

Подробная информация об удаленном репозитории:
git remote show origin

Для получения коммитов из удаленного репозитория (аналог svn checkout):
git pull origin master

  master - имя ветки удаленного репозитория из которой получаем коммиты

Для обновлении информации об удаленном репозитории надо выполнить (аналог svn update):
get fetch origin

Эта команда может потребоваться после публикации коммитов в удаленный репозиторий другими пользователями.

Посмотреть текущие незакоммиченные изменения в локальном репозитории:
git diff

Посмотреть незакоммиченную информацию по измененным, добавленным, удаленным файлам:
git status

Посмотреть отличие локального репозитория от удаленного (включая и коммиты и незакоммиченные изменения):
git diff origin/master

Откатить незакомиченные изменения в файле:
git checkout <имя файла>

Откатить все незакоммиченные изменения:
git checkout -f

Откатить состояние локального репозитория до определнного коммита:
git reset --hard 54f9ebec915f444297fd50812061ea2a4240b0fe

  54f9ebec915f444297fd50812061ea2a4240b0fe - id коммита (выводится в истории командой git log)

Сформировать патчи по коммитам:
git format-patch -n 54f9ebec915f444297fd50812061ea2a4240b0fe

  54f9ebec915f444297fd50812061ea2a4240b0fe - все коммиты до указанного будут в сгенерированных командой файлах

Приложить патч к локальному репозиторию можно коммандой:
git am -3 <имя файла с патчем>

Alias'ы для bash
Привожу используемые мной alias'ы для интерпретатора командной строки:
alias gitam='git am -3'
alias gitan='git annotate'
alias gitb='git branch'
alias gitbr='git branch -r'
alias gitc='git commit'
alias gitca='git commit -a'
alias gitcam='git commit --amend'
alias gitcf='git checkout -f'
alias gitch='git checkout'
alias gitchf='git checkout -f'
alias gitd='git diff'
alias gitdom='git diff origin/master'
alias gitdr='git diff --raw'
alias gitf='git fetch'
alias gitfo='git fetch origin'
alias gitfp='git format-patch "HEAD^"'
alias gitfpn='git format-patch -n '
alias gitl='git log'
alias gitlu='git log -u'
alias gitm='git merge'
alias gitp='git pull'
alias gitpom='git pull origin master'
alias gitpum='git push origin master'
alias gitpus='git push shpigor master'
alias gitr='git remote'
alias gitrh='git reset --hard'
alias gitrhh='git reset --hard "HEAD^"'
alias gitrs='git remote show'
alias gitrso='git remote show origin'
alias gitrv='git revert'
alias gits='git show'
alias gitst='git status'
alias gitstu='git status -uno'

Ссылки
1) Конфигурация git
http://www.arthurkoziel.com/2008/05/02/git-configuration/

2) Подробное руководство по git на русском
http://freesource.info/wiki/RuslanHihin/gitusermanual?v=b7s&

3) Подробное руководство по git
http://schacon.github.com/git/user-manual.html

Комментариев нет:

Отправить комментарий