GitCS

Configuration

git config --list — показать все натройки
git config COMMAND — показать значение конкретной опции
Git хранит параметры конфигурации в трёх местах:
1. /etc/gitconfig — общие настройки для всех пользователей системы и всех репозиториев.
git config --system — при использовании данной команды сохраняет настройки в данном месте.
2.~/.gitconfig или ~/.config/git/config — настройик конкретного пользователя.
git config --global— при использовании данной команды сохраняет настройки в данном месте.
3..git/config(в папке git репозитория , который сейчас используется) — настройки репозитория
git config— при использовании данной команды (т.е. без ключа) сохраняет настройки в данном месте.

CreateLocalRepo

git init — импорт директории проекта в git
git clone [URL] — клонирование репозитория с удаленного сервера

Add/Save/Check/Cancel changes

Внесение/Сохранение изменений

Файл бывают — отслеживаемые и не отслеживаемые(Untracked).
Отслеживаемый файлы могут иметь статус — не модифицированные, модифицированные но не проиндексированные, модифицированные проиндексированные (кандидат на коммит).
git status — просмотреть текущий статус git состояния файлов/папок
git add [FILE or .] — сделать файл отслеживаемым, индексировать файл после изменений
git rm [FILE] — данная команда удаляет файл из репы и с диска, чтоб файл не появлялся, как не отслеживаемый
ключ --cached — удаляет файл из репы но не с диска
ключ -f — удаление уже проиндексированного файла(кандидата в коммит)
git mv [FILE] — перемещение файла
git commit — закоммитеть
ключ -m "COMMENT" — добавить комментраий к коммиту
ключ -a — позволяет обходиться без команды git add

Проверка изменений

git log — показать историю коммитов
ключ --oneline — показать сокращенный вариант
ключ -3 — показать ограниченное кол-во коммитов, в данном случае 3
ключ --all — показать всю исторю коммитов
ключ -p — показать патч для коммита
git diff просмотра изменений в не проиндексированном файле
ключ --stage просмотра изменений в уже проиндексированном файле

Отмена изменений

git checkout -- [FILE] — отмена изменений в не проиндексированном файле
git reset HEAD [FILE] — отмена индексации файла
git revert HEAD --no-edit — отмета последнего коммита, откат к предыдущему коммиту

Stash

git stash ???
git stash list ???
git stash show ???
git stash apply ???
git stash drop ???
git stash pop ???
git stash clear ???

Branch

По умолчанию имя основной ветки в git — master.
HEAD — это указатель на локальную ветку в которой мы сейчас находимся.

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

git branch — показать список веток
ключ -v — показать инфу о последнем коммите в ветках
git branch [new_branch_name] — создать ветку
git branch -d [branch_name] — удалить ветку
git checkout [branch_name] — переключение по веткам или коммитам
git checkout -b [new_branch_name] — создать и переключиться в ветку
git log --all --graph --oneline — отобразить историю визуализируя ветки и их коммиты

Слияние веток

Если сливаются коммиты двух разных веток,которые не являются прямыми потомками, то такое сливание называется — трехстороннее слияние двух коммитов, т.е. двух коммитов сливаемых веток и общего для двух веток родительского коммита.
git merge [branch_name] — слить ветки, т.е. слить ветку [branch_name] в ветку в которой сейчас находишься, например master
git rebase [branch_name] — слияние веток перемещением

Remote Repository

git remote — просмотр настроенных удаленных репозиториев
ключ -v — просмотр настроенных удаленных репозиториев с адресами для чтения и записи
git remote show [remote-name] — подробная информация про удаленный репозиторий
git remote add [shortname] [url] — добавить удаленный репозиторий и присвоить ему имя
git remote rename [old-name] [new-name] — переименовать репозиторий
git remote rm [remote-name] — удалить репозиторий
git fetch [remote-name] — получение изменений с удаленного реопзитория, только забирает данные, но не сливает в вашими наработками. Слить(merge) нужно самому потом.
git pull [remote-name] — получение изменений с удаленного реопзитория, забирает данные и сливает с вашими данными
git push [remote-name] [branch-name] -отправка изменений на удаленный сервер

Tags,Aliases

git tag — просмотр меток
git tag -l [search-template] — поиск меток по шаблону
git tag [TAG] — создание легковесной метки (без каких либо ключей)
git tag -a [TAG] -m [Comments] — создать аннотированную метку
git tag -a [tag] [commit_control_sum] — выставление метки для пройденного коммита
git config --global alias [command] — создание псевдонимов для команд гита

Cheat Sheet