#Шпаргалка с основными командами для Git (ссылка на команды)(https://agladky.ru/blog/git-cheat-sheet/)
git config --global user.name "[name]" — установить имя, которое будет прикрепляться к коммиту.
git config --global user.email "[email address]" — установить email, который будет прикрепляться к коммиту.
git config --global color.ui auto — включить полезную подсветку командной строки.
git config --global push.default current — обновлять удаленную ветку с таким же именем, что и локальная, при пуше изменений (если не указано иного).
git config --global core.editor [editor] — установить редактор для редактирования сообщений коммита.
git config --global diff.tool [tool] — установить программу для разрешения конфликтов при слиянии.
Создание псевдонимов:
git config --global alias.ch checkout - псевдоним для команды checkout -> ch команда выглядит как git ch
git config --global alias.cmt commit - псевдоним для commit -> git cmt
git config --global alias.st status - эквивалент git status -> git st
git config --global alias.unstage 'reset HEAD --' - псевдоним для отката изменений git unstage [filename] -> git reset HEAD -- [filenme]
git config --global alias.last 'log -1 HEAD' - просмотр последнего коммита
git config --global alias.getgraph 'log --pretty=format:"%Cgreen%h%Creset %cd %C(blue)%an %C(yellow)%s" --graph --date=format:"%Y-%m-%d %H:%M"' построение дерева коммитов по формату
git config --global alias.treelog 'log --pretty=format:"%Cgreen%h %C(blue)%an %C(yellow)%s %C(red)%d %Creset %cr" --graph --all' просмотр дерева со всеми ветками
git init [project-name] — создать новый локальный репозиторий с заданным именем.
git clone [url] — загрузить проект и его полную историю изменений.
git status — полный список изменений файлов, ожидающих коммита.
git status -s — краткий вид изменений.
git diff — показать изменения в файлах, которые еще не были добавлены в индекс коммита (staged).
git add [file] — сделать указанный файл готовым для коммита.
git add . — сделать все измененные файлы готовыми для коммита.
git add '*.txt' — добавить только файлы, соответствующие указанному выражению.
git add --patch filename — позволяет выбрать какие изменения из файла добавятся в коммит.
git diff --staged — показать что было добавленно в индекс с помощью git add, но еще не было закоммиченно.
git diff HEAD — показать что изменилось с последнего коммита.
git diff HEAD^ — показать что изменилось с предпоследнего коммита.
git diff [branch] — сравнить текущую ветку с заданной.
git difftool -d — то же самое, что и diff, но показывает изменения в заданной difftool.
git difftool -d master.. — показать изменения, сделанные в текущей ветке.
git diff --stat — показать статистику какие файлы были изменены и как.
git reset [file] — убрать файлы из индекса коммита (изменения не теряются).
git commit — записать изменения в репозиторий. для написания сообщения откроется назначенный редактор.
git commit -m "[descriptive message]" — записать изменения с заданным сообщением.
git commit --amend — добавить изменения к последнему коммиту.
git branch — список всех локальных веток в текущей директории.
git branch -vv - список и состояние всех локальных и удаленных веток (только данные, которые обновлены с удаленного сервера)
git fetch --all; git branch -vv - обновление всех данных с удаленных репозиториев и отображение состояния удаленных и локальных веток
git branch [branch-name] — создать новую ветку.
git push <сервер> <имя ветки> - отправка ветки на удаленный сервер и создание удаленной ветки с таким-же названием
git push <сервер> <ветка>:<удаленная ветка> - отправка локальной ветки на сервер в указанную ветку.
git checkout [branch-name] — переключиться на указанную ветку и обновить рабочую директорию.
git checkout -b <branchname> <remote>/<branch> — переключиться на удаленную ветку.
git cheсkout [filename] — вернуть файл в первоначальное состояние если он еще не был добавлен в индекс коммита.
git merge [branch] — соединить изменения в текущей ветке с изменениями из заданной.
git merge --no-ff [branch] — соединить ветки без режима “fast forwarding”.
git rebase [branch name]- перебазирование текущей ветки в указанную ветку. - берется первый коммит, после разветвления и перемещается в конец указанной ветки (Выпрямление ветки) также как и с коммандой merge могут возникнуть конфликты слияния.
git rebase [basic branch] [other branch] (git rebase master test) перемещение ветки other branch в конец basic branch.
git branch -a — посмотреть полный список локальных и удаленных веток.
git branch -d [branch] — удалить заданную ветку.
git branch -D [branch] — принудительно удалить заданную ветку, игнорируя ошибки.
git branch -m <oldname> <newname> — переименовать ветку.
git branch -u [remote]/[branch] - (git branch -u origin/fixbranch) - настройка на отслеживание текущей ветки на ветку на удаленном сервере (либо ветку в другом репозитории)
git rm [file] — удалить файл из рабочей директории и добавить в индекс информацию об удалении.
git rm --cached [file] — удалить файл из репозитория, но сохранить его локально.
git mv [file-original] [file-renamed] — изменить имя файла и добавить в индекс коммита.
git tag - отобразить все метки
git tag -a [version] -m [message] (git tag -a v2.0 -m 'Version 2.0 ultimate') - добавление аннотированной ветки
git tag v1.4-lw - добавление легковесной метки
git tag -a [tag] [commitHash] пример (git tag -a v1.3 9rf56sd4) - добавление метки к определенному коммиту
git show [version] - (git show v1.3) показать данные указанной метки
git push --tags - отправка всех веток на сервер
git push origin [имя метки] - отправка определенной метки на сервер
git log — список изменения текущей ветки.
git log --follow [file] — список изменения текущего файла, включая переименования.
git log --pretty=format:"%h %s" - Отображение коммитов в заданном формат
git log --pretty=format:"%h - %ar : %s "--graph — Отображение коммитов в заданном формате в виде дерева ниток.
git log --pretty=oneline - отображение изменений в одну строку
git log --ghaph - отобразить граф (ветвление) истории
git log --graph --all - отобразить граф всех веток (по умолчанию отображается история и ветвление только текущей ветки)
git log --author='Name' --after={1.week.ago} --pretty=oneline --abbrev-commit — посмотреть над чем работал заданный пользователь последнюю неделю.
git log --no-merges master.. — посмотреть историю изменений только для текущей ветки.
git diff [file-branch]..[second-branch] — посмотреть различия между двумя заданными ветками.
git show [commit] — показать метадату и изменения в заданном коммите.
git show [branch]:[file] — посмотреть на файл в другой ветке, не переключаясь на неё.
git log --since=2.weeks - список коммитов за последнюю неделю
git log -(n) - вывод последних n коммитов
git log --since, --after (-until, --before) - коммиты сделанные в определенное время.
git log --grep -поиск по ключевым словам в сообщении коммита