5.3 KiB
5.3 KiB
Полезные источники
Команды
git remote -v
- показывает все удалённые репозитории, которые связаны с локальным репозиториемgit init ; git remote add origin <https> or <ssh>
- добавить удалённый репозиторийgit remote set-url origin git@github.com:ilyamak04/shortest_flight.git
- установить новый url удалённого репозиторияrm -rf /path/to/repo/.git
- git больше не будет отслеживать эту директориюgit config --global --list
git config --global user.name "Ваше Имя"
git config --global user.email "ваш_емейл@example.com"
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 <filename>
- добавить в индекс -
git commit -m
- коммит с сообщением -
git branch
git branch # список локальных веток
git branch dev # создать ветку dev
git branch -d dev # удалить локальную ветку
git branch -D dev # форсированное удаление
git log
git log # список коммитов
git log --oneline # компактно
git log -p # с diff'ами
git log --graph --all # с ветвлением
git checkout
git checkout dev # перейти в ветку dev
git checkout -b feature123 # создать и сразу перейти
git checkout -- myfile.txt # откат файла к HEAD
современные альтернативы checkout
git switch dev # перейти в ветку dev
git switch -c newbranch # создать и сразу перейти
git restore myfile.txt # откат файла к последнему коммиту
git restore --source=<commit> myfile.txt # откат файла к конкретному коммиту
git restore --source=HEAD~1 myfile.txt # откат файла к предыдущему коммиту
git restore --staged file.txt # убрать из индекса
-
git merge dev
- объединяет ветку в текущую -
rebase
# взять все коммиты в ветке feature, которые не входят в main, и "переписать" их поверх последнего коммита в main.
git checkout feature
git rebase main
- если во время ребейза возник конфликт
# пit остановится и скажет где конфликт
# решаешь конфликт потом:
git add <файл>
git rebase --continue
# если хочешь прервать ребейз
git rebase --abort
- применяет отдельный коммит из другой ветки
git cherry-pick <hash>
-
git show <hash
- показывает содержимое коммита -
git diff
git diff # рабочая директория vs индекс
git diff --staged # индекс vs последний коммит
git diff main..dev # между ветками
- откат и исправления
git reset HEAD~1 # откат на 1 коммит (оставляя файлы, убирает из индекса)
git reset --soft HEAD~1 # откат на 1 коммит (изменения остаются в идексе)
git reset --hard HEAD~1 # откат полностью, удаляет файлы
git reset file.txt # убрать файл из индекса
- создаёт новый коммит, отменяющий изменения указанного коммита
git revert <hash>
-
git fetch
- получает все изменения с удалённого репозитория, но не сливает их -
git tag
git tag v1.0 # создать
git tag -d v1.0 # удалить
git push origin v1.0 # отправить тэг, по умолчанию git push не отправляет тэги
git push origin --tags # отправить все теги (origin, имя удалённого репозитория)