From 8617cf9b5dcdd8177f8434b9dd91767eed8da88d Mon Sep 17 00:00:00 2001 From: ilyamak04 Date: Tue, 2 Sep 2025 17:44:05 +0300 Subject: [PATCH] add some git command --- docs/Other/Git.md | 100 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 100 insertions(+) diff --git a/docs/Other/Git.md b/docs/Other/Git.md index 5dc7b6d..32e0a9f 100644 --- a/docs/Other/Git.md +++ b/docs/Other/Git.md @@ -16,3 +16,103 @@ - `git config ...` - изменить для конкретного репозитория (без флага `--global`) - `log --pretty=format:'%h %cd | %s%d [%an]' --graph --date=iso` - удобный вывод `git log` - `git pull --rebase` - спуллить изменения из удалённого репозитория в локальную ветку не создавая мерджи, локальные коммиты просто встанут после коммитов из удалённого репозитория + +--- + +- `git init` - создаёт репозиторий в текущей директории +- `git clone` - клонирует удалённый репозиторий +- `git status` - текущее состояние репозиторий +- `git add ` - добавить в индекс +- `git commit -m` - коммит с сообщением + +- `git branch` +```bash +git branch # список локальных веток +git branch dev # создать ветку dev +git branch -d dev # удалить локальную ветку +git branch -D dev # форсированное удаление +``` + +- `git log` +```bash +git log # список коммитов +git log --oneline # компактно +git log -p # с diff'ами +git log --graph --all # с ветвлением +``` + +- `git checkout` +```bash +git checkout dev # перейти в ветку dev +git checkout -b feature123 # создать и сразу перейти +git checkout -- myfile.txt # откат файла к HEAD +``` + +- `современные альтернативы checkout` +```bash +git switch dev # перейти в ветку dev +git switch -c newbranch # создать и сразу перейти + +git restore myfile.txt # откат файла к последнему коммиту +git restore --source= myfile.txt # откат файла к конкретному коммиту +git restore --source=HEAD~1 myfile.txt # откат файла к предыдущему коммиту +git restore --staged file.txt # убрать из индекса +``` + +- `git merge dev` - объединяет ветку в текущую + + +- `rebase` +```bash +# взять все коммиты в ветке feature, которые не входят в main, и "переписать" их поверх последнего коммита в main. +git checkout feature +git rebase main +``` + +- если во время ребейза возник конфликт +```bash +# пit остановится и скажет где конфликт +# решаешь конфликт потом: +git add <файл> +git rebase --continue +# если хочешь прервать ребейз +git rebase --abort +``` + +- применяет отдельный коммит из другой ветки +```bash +git cherry-pick +``` + +- `git show +``` + +- `git fetch` - получает все изменения с удалённого репозитория, но не сливает их + +- `git tag` +```bash +git tag v1.0 # создать +git tag -d v1.0 # удалить +git push origin v1.0 # отправить тэг, по умолчанию git push не отправляет тэги +git push origin --tags # отправить все теги (origin, имя удалённого репозитория) +``` +