Git
Ветки, коммиты, отмена изменений, rebase, stash и поиск по истории.
Повседневное
Состояние рабочей копии
git status -sbСоздать ветку и переключиться на неё
git switch -c <branch>
Закоммитить всё отслеживаемое
git commit -am "message"Отправить новую ветку на сервер
git push -u origin <branch>
Подтянуть изменения с rebase
git pull --rebaseКомпактная история с графом
git log --oneline --graph --decorate -20Отмена изменений
Отменить изменения в файле
git restore <file>
Убрать файл из индекса
git restore --staged <file>
Изменить последний коммит
git commit --amend --no-editОтменить последний коммит, сохранив изменения
git reset --soft HEAD~1Создать коммит, отменяющий другой
git revert <commit>
Вернуть «потерянный» коммитпродвинутая
git reflogНайдите нужный хэш и выполните git reset --hard <hash> или git cherry-pick <hash>.
Stash
Спрятать изменения, включая новые файлы
git stash -uСписок stash
git stash listВернуть последний stash
git stash popПродвинутое
Интерактивный rebase последних N коммитовпродвинутая
git rebase -i HEAD~<n>
Перенести коммит в текущую веткупродвинутая
git cherry-pick <commit>
Найти коммит, в котором появилась строкапродвинутая
git log -S "<text>" --oneline
Кто последним менял строки файла
git blame -L 10,30 <file>
Бинарный поиск коммита с багомпродвинутая
git bisect start && git bisect bad && git bisect good <commit>
Удалить локальные ветки, уже влитые в mainпродвинутая
git branch --merged main | grep -v -E '^\*|main' | xargs -r git branch -d