Шпаргалка по Git-командам, которые используются ежедневно в реальной разработке: работа с ветками, разрешение конфликтов, откат изменений и полезные алиасы. Без воды — только команды и пояснения.
Начальная настройка
|
1 2 3 4 |
git config --global user.name "Ваше Имя" git config --global user.email "you@example.com" git config --global core.editor "nano" # или vim, code git config --global init.defaultBranch main |
Полезные алиасы
|
1 2 3 4 5 |
git config --global alias.st status git config --global alias.co checkout git config --global alias.br branch git config --global alias.ci commit git config --global alias.lg "log --oneline --graph --decorate --all" |
Работа с ветками
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
# Список веток (локальные) git branch # Список всех веток (включая удалённые) git branch -a # Создать ветку и сразу переключиться git checkout -b feature/my-feature # Переименовать локальную ветку git branch -m old-name new-name # Удалить локальную ветку git branch -d feature/my-feature # Удалить ветку на сервере git push origin --delete feature/my-feature # Выкачать все ветки с сервера git fetch --all |
Синхронизация с удалённым репозиторием
|
1 2 3 4 5 6 7 8 9 10 11 |
# Получить изменения (без слияния) git fetch origin # Получить изменения и слить с текущей веткой git pull origin main # Отправить ветку на сервер git push origin feature/my-feature # Привязать локальную ветку к удалённой (один раз) git push -u origin feature/my-feature |
Разрешение конфликтов
При конфликте слияния Git помечает проблемные места в файле:
|
1 2 3 4 5 |
<<<<<<< HEAD Ваш код (в текущей ветке) ======= Входящие изменения (из другой ветки) >>>>>>> feature/my-feature |
Отредактируйте файл вручную, затем:
|
1 2 3 4 5 |
git add путь/к/файлу git commit # откроет редактор для сообщения коммита # Для удобного разрешения конфликтов: git mergetool |
Откат изменений
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
# Отменить изменения в файле (до git add) git checkout -- имя_файла # Убрать файл из индекса (отменить git add) git reset имя_файла # Откатить последний коммит (изменения остаются в рабочей директории) git reset --soft HEAD~1 # Откатить всё до состояния последнего коммита (ОСТОРОЖНО: изменения удалятся) git reset --hard HEAD # Создать новый коммит, отменяющий заданный (безопасно для публичных веток) git revert abc1234 |
Просмотр истории
|
1 2 3 4 5 6 7 8 9 10 11 |
# Красивый граф веток git log --oneline --graph --decorate --all # Изменения в конкретном файле git log --follow -p путь/к/файлу # Кто изменил строку git blame путь/к/файлу # Поиск коммита, содержащего строку git log -S "имя_функции" --oneline |
Stash — временное сохранение изменений
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
# Сохранить незакоммиченные изменения git stash push -m "WIP: правка формы" # Список сохранённых git stash list # Восстановить последний stash git stash pop # Восстановить конкретный git stash apply stash@{2} # Удалить stash git stash drop stash@{0} |
Обработка коммита в консольном редакторе
Если Git открыл vim для сообщения коммита и вы не знаете как выйти:
- Нажмите
i— режим редактирования - Введите сообщение коммита
- Нажмите
Esc - Введите
:wqи нажмите Enter
Чтобы выйти без сохранения: :q!
Переключится на предыдущий коммит
|
1 |
git checkout HEAD~1 |
Откатить ветку на коммит назад, удалив последний коммит
|
1 |
git reset --hard HEAD~1 |
Переключиться на конкретный коммит по хешу
|
1 2 3 |
git log --oneline # посмотреть хеши git checkout <hash> # переключиться (detached HEAD) git reset --hard <hash> # откатить ветку на этот коммит |
Как удалить файл от отслеживания
|
1 |
git rm --cached <file_name> |
Теги
|
1 2 3 4 5 6 7 8 9 |
# Создать аннотированный тег git tag -a v1.2.0 -m "Release 1.2.0" # Отправить теги на сервер git push origin --tags # Удалить тег локально и на сервере git tag -d v1.2.0 git push origin --delete v1.2.0 |
