Вернуться
--------------------------------------------------------------------------------
# Буфер обмена
--------------------------------------------------------------------------------

git stash | Сохранить изменения в бумер обмена.
git stash pop | Выгрузить изменения сделаные предыдущей командой.

--------------------------------------------------------------------------------
# Рабочая директория
--------------------------------------------------------------------------------

git checkout -f | Сбросить индекс и откатить все изменения в рабочей директории.
git checkout @ . | Тоже самое.
git reset --hard | Тоже самое.
git checkout . | Откатить все изменения до версии в индекс, если индекс пуст, то до версии коммит.
git checkout 6c2e81b . | Откатить все изменения до версии из коммит "6c2e81b" и добавить их в индекс и рабочую директорию.

--------------------------------------------------------------------------------
# Индекс
--------------------------------------------------------------------------------

git add -- index.html | Добавить файл "index.html".
git reset -- index.html | Сбросить файл "index.html".
git reset | Сбросить все изменения.
git add . | Добавить все изменения из текущей директории.
git add --all | Добавить все изменения из всех поддиректорий.
git add -A | Тоже самое, только сокращенный вариант.

--------------------------------------------------------------------------------
# Перемещение указателя ветки на другой коммит
--------------------------------------------------------------------------------

git reset --hard 6c2e81b | С удалением всех изменений в рабочей директории и в индекс.
git reset --soft 6c2e81b | С сохранением текущих изменений в рабочей директории и в индекс.
git reset 6c2e81b | С сохранением текущих изменений только в рабочей директории.
git reset --mixed 6c2e81b | Тоже самое, так как --mixed это флаг по умолчанию.

--------------------------------------------------------------------------------
# Коммит
--------------------------------------------------------------------------------

git commit --amend -m "New comment" | Перезаписать последний коммит с комментарием "New comment".
git commit --amend --no-edit | Тоже самое, но без изменения комментария.
git commit -a -m "Comment" | Сделать коммит в обход git add, но только для файлов которые уже отслеживаються.
git commit -v | Вывести сравнения между индекс и текущий коммит.

--------------------------------------------------------------------------------
# Список коммитов
--------------------------------------------------------------------------------

git log | Список всех коммитов.
git log -15 | Только последние 15 коммитов.

git log -- index.html | Только коммиты которые модифицировали файл "index.html".
git log -- src/ | Тоже самое, но для всех файлов в директории "src/".
git log -p -- index.html | Добавить наглядные различия.
git log -p --follow -- index.html | Если файл был переименован.
git log -S "foo()" | Только в которых были добавлены или удалены любые файловые данные совпадающие со строкой "foo()".

git log --oneline | Сократить вывод до одной строки на коммит.
git log --oneline --abbrev=4 | Сократить хэш коммита до 4 символов.
git log --oneline --graph | С визуальным отображением веток.

git log ..feature | Только коммиты из ветки "feature" исключая коммиты из текущей ветки.
git log feature ^master | Только коммиты из ветки "feature" исключая коммиты из ветки "master".
git log feature ^master --boundary | Тоже самое, но дополнительно вывести коммит на котором ветки разделились.
Наглядно сравнить две ветки
git log master...feature --boundary | Ветки "master" и "feature" включительно до коммит где они разделились.

--------------------------------------------------------------------------------
# Изменения в коммит
--------------------------------------------------------------------------------

git show | Изменения между текущим и предыдущем коммит.
git show --name-only | Вывести только имена файлов.
git show 6c2e81b | Изменения между текущим коммит и коммит "6c2e81b".
git show master | Изменения между текущим коммит и последним коммит в ветке "master".

--------------------------------------------------------------------------------
# Сравнение
--------------------------------------------------------------------------------

git diff --name-only | Вывести только имена файлов.
git diff --word-diff | Включить показ отличий по словам, по умолчанию по строкам.
git diff --color-words | Тоже самое, но без добавдения в квадратные и фигурные скобки.
git diff -- index.html user.html | Вывести только файлы "index.html" и "user.html".

--------------------------------------------------------------------------------
# Сравнение рабочей директории
--------------------------------------------------------------------------------

git diff | С индекс, если индекс пуст, то с текущим коммит.
git diff @ | С текущим коммит.
git diff 6c2e81b | С коммит "6c2e81b".
git diff master | С последним коммит в "master".

--------------------------------------------------------------------------------
# Сравнение индекс
--------------------------------------------------------------------------------

git diff --cached | С текущим коммит.
git diff --cached 6c2e81b | С коммит "6c2e81b".
git diff --cached master | С последним коммит в "master".

--------------------------------------------------------------------------------
# Сравнение коммитов
--------------------------------------------------------------------------------

git diff 6c2e81b 4eb51f4 | Коммит "6c2e81b" с коммит "4eb51f4".

--------------------------------------------------------------------------------
# Сравнение между ветками
--------------------------------------------------------------------------------

git diff master feature | С последним коммит в "master" и "feature".
git diff master..feature | Тоже самое.
git diff master...feature | С коммит на котором отделилась "feature" от "master" c последним коммит в "feature".

--------------------------------------------------------------------------------