wiki/docs/Other/Git.md
2025-09-02 17:44:05 +03:00

5.3 KiB
Raw Blame History

Полезные источники

Команды

  • 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, имя удалённого репозитория)