Шпаргалка по git

Подготовка

Авторизация идёт по ключу. Ключи брать у Asmodeus’a.
Прописать путь к ключу в /etc/ssh/ssh_config

Host abills.net.ua
 IdentityFile **Путь к ключу**

Указываем свои даные

# git config --global user.name *Имя разработчика*
# git config --global user.mail *e-mail разработчика*

Клонирование репозитория

# cd /usr
# git clone git@abills.net.ua:abills.git

*Если просит пароль для git, значит не подхватило ключ.

Создание ветки

Для примера, рассмотрим правку модуля Msgs. Переходим в dev:

# git checkout dev

Стягиваем обновления из dev

# git pull origin dev 

Отделяем ветку

# git branch Msgs

Переходим в новую ветку

# git checkout Msgs

Можно одной командой

# git checkout -b Msgs

Рабочий процесс

Создаём новую ветку для задачи Msgs

# git checkout -b Msgs

В новой ветке:
Повторить нужное количество раз:
<эти действия>
Редактируем до достижения результата.

# edit some files\\
Фиксируем изменения:\\
# git commit -a -m ‘(описание изменений)’\\

</эти действия>

Заливаем в основной репозиторий в ветку Msgs

# git push origin Msgs

Залить готовые изменения (сделанные до подключения к git):

Перемещаем свою папку abills
Клонируем репозиторий
Отделяем ветку
Вносим свои изменения из копии
Фиксируем.

Внештатные ситуации:

Conflict Если несколько человек редактировали один файл, может возникнуть конфликт слияния.
После git pull и сообщения о возникновения конфликта

# vimdiff *путь к файлу*

ищем »»>HEAD
…..
===========
…..
««««<Msgs
Оставляем нужную часть, сохраняем
добавляем в index

# git add *путь к файлу*

Фиксируем,
Повторяем git pull

Отмена коммита

возврат к коммиту:

# git revert (hash-код комита)

возврат на 5 коммитов назад:

# git reset HEAD~5

Посмотреть историю коммитов для текущей ветки

# git log

Посмотреть, кто что правил в файле

# git blame <путь/к/файлу/имя файла>

Если во время работы над одной веткой, нужно перейти в другую, без фиксации изменений
“Прячем” изменения:

# git stash

Переходим в другую ветку:

# git checkout branch2

Редактируем:

# edit some files

Фиксируем:

# git commit -a -m ‘message’

Возвращаемся в первую ветку:

# git checkout branch1

Применяем спрятанные изменения:

# git stash pop

Git log варианты вывода

git log --graph --pretty=format:"%C(yellow)%h%Creset%C(blue)%d%Creset %C(white bold)%s%Creset %C(white dim)(by %an %ar)%Creset" --all

Обновление списка удалённых веток

# git remote update origin --prune

Алиасы

Вставить в ~/.gitconfig в секцию [alias]

[alias]
  st=status

  pl = pull
  ph = push
  b = branch
  ch = checkout
  df = diff

  hist = log --pretty=format:\"%h %ad | %s%d [%an]\" --graph --date=short
  type = cat-file -t
  dump = cat-file -p

Полезные статьи: