Шпаргалка по Git
Честно украл у Насти. Выложу тут для начинающих и себе, чтоб не запамятовать.
Начальные установки:
установка имени пользователя:
git config --global user.name "Admin Adminkovi4"
установка емэйла пользователя:
git config --global user.email "[email protected]"
инициализация гита:
git init
Общие команды:
просмотр в указанном файле построчно: кто и когда последний менял каждую строчку кода (короткий формат даты):
git blame index.html --date short
показать хэлп указанной команды, в данном случае config:
git help config
показать логи:
git log
показать статус:
git status
показать изи текущим состоянием:
git diff HEAD~5
показать изменения между коммитами от sha1 до sha2:
git diff sha1..sha2
показать изменения между коммитами на master и на ветке bird:
git diff master bird
отменяет изменения в указанном файле (восстаналивает файл из индекса):
git checkout -- cats.html
При этом команда git checkout cats.html работает так:
если есть ветка с именем cats.html, то произойдет переключение на эту ветку. Для того, чтобы этого не произошло можно сделать git checkout -- cats.html, тогда гит будет точно знать, что нужно восстановить файл, а не переключиться на ветку.
Кроме того файл можно восстанавливать не только с текущего индекса, а, например, так:
git checkout master~2 cats.html
тогда cats.html будет взят из версии мастера на 2 коммита раньше.
Работа с коммитами:
Аналог
git add .
(добавить все измененомиту и меняет сообщение на новое (хак, который нужно аккуратно использовать):
git commit --amend -m "Comment"
удаляет последний коммит, а изменения остаются незакоммиченные:
git reset --soft HEAD^
удаляет последний коммит и все изменения в нем:
git reset --hard HEAD^
аналогично:
удаляет два последних коммита и все изменения:
git reset --hard HEAD^^
удаляет два последние 5 коммитов и все изменения:
git reset --hard HEAD~5
-u пишется в первый раз, чтобы потом запомнить позицию и можно было писать просто git push:
git push -u origin master
Работа с удаленным сервером и удаленными ветками:
создание нового удаленого сервера с именем origin:
git remote add origin http://github.com/blabla.git
просмотр списка удаленных серверов:
git remote -v
удалить удаленный сервер (масло масляное? \^_\^):
git remote rm origin
показать информацию об удаленном сервере:
git remote show origin
удаляет локальные ветки, которых больше нет на удаленном сервере:
git remote prune origin
показывает список всех удаленных веток:
git branch -r
удаляет удаленную ветку name_branch:
git push origin :name_branch
Теги:
добавляет новый тег с именем v0.0.3:
git tag -a v0.0.3 -m "version 0.0.3"
пушит новый тег:
git push --tags
Конфигурация и логирование:
раскрашивает логи =):
git config --global color.ui true
выводит логи в сокращенно одну строчку:
git config --pretty=oneline
вывод логов в указанном формате, где:
%ad - author date
%an - author name
%h - SHA hash
%s - subject
%d - ref names
git log --pretty=format:"%h %ad- %s [%an]"
вывод логов с выводом измененных строчек:
git log --oneline -p
вывод логов с выводом статистики изменений:
git log --oneline --stat
вывод логов в виде графического дерева коммитов:
git log --oneline --graph
вывод всех логов до указанной даты:
git log --until=1.minute.ago
вывод логов начиная с указанной даты:
git log --since-1.day.ago
вывод логов во временном промежутке:
git log --since=2012.01.01 --until=2013.12.31
гит перестает следить за указанным файлом и удаляет его из гита, но не локально:
git rm --cached development.log
посмотреть список конфигураций:
git config --list
использовать emacs в качестве интерактивных команд:
git config --global core.editor emacs
использовать opendiff для мержа конфликтов (работает только в OS X)
git config --global merge.tool opendiff
Алиасы:
задание алиаса для лог формата:
git config --global alias.mylog
"log --pretty=format:'%h %s [%an]' --graph"
создание сокращения, отныне git st аналогичен команде git status:
git config --global alias.st status
Комментарии: