linux-labs

Вики / Базовые команды

git (основы для админа)

Команда git 2.x БазовоеФайлы

Базовый рабочий цикл, ветки, откат, разрешение конфликтов — минимум для работы.

git — система контроля версий. Админу нужен для конфигов-как-кода, IaC, правок в репозиториях. Минимальный цикл: правка → addcommitpush.

git clone url                     # склонировать репозиторий
git status                        # что изменено / в индексе
git add file ; git add -A         # добавить в индекс (staged)
git commit -m "сообщение"         # зафиксировать
git push                          # отправить в удалённый
git pull                          # забрать изменения
git log --oneline -10             # история кратко
git branch                        # список веток
git switch -c feature             # создать и перейти (новее, чем checkout -b)
git switch main                   # переключиться
git merge feature                 # влить ветку в текущую
git branch -d feature             # удалить влитую ветку
git diff                          # незакоммиченные изменения (см. diff-patch)
git diff --staged                 # что в индексе
git restore file                  # отменить правки файла (вернуть как в HEAD)
git restore --staged file         # убрать из индекса (оставив правки)
git revert <commit>               # новый коммит, отменяющий указанный (безопасно)
git reset --hard origin/main      # ЖЁСТКО вернуть к удалённому (теряет локальное!)
git stash ; git stash pop         # отложить правки и вернуть

Merge conflict

В файлах появляются маркеры <<<<<<<, =======, >>>>>>>. Открой, оставь нужное, убери маркеры, затем git add file и git commit. git status подскажет файлы.

Закоммитил не то / в не ту ветку

git revert <commit> — безопасно отменить (новым коммитом). Локальный последний коммит — git reset --soft HEAD~1 (вернёт правки в индекс).

Permission denied (publickey) при push

SSH-ключ не настроен/не на сервере — см. ssh-keys. Проверь git remote -v (ssh vs https).

Случайно сделал reset --hard

git reflog помнит, где был HEAD — можно вернуться: git reset --hard <hash>.

git status ; git add -A ; git commit -m "msg" ; git push
git switch -c feature ; git switch main ; git merge feature
git diff ; git restore file ; git revert <commit>
git log --oneline -10 ; git reflog   # история / спасение
git stash ; git stash pop

См. также