git_commands.md 4.9 KB

# Основные команды git

Работа с конфигурацией

Типы настроек (property_type):

  • Системная (--system)
  • Пользовательская (--global)
  • Для репозитория (--local)

    Установить имя

    $ git config --global user.name [name]
    

    Установить почту

    $ git config --global user.email [email]
    

    Включить подпись коммитов по умолчанию

    $ git config --global commit.gpgsign true
    

    Получить все настройки

    $ git config --list
    

    Настройки снизу переопределяют те, что вверху

    Откуда именно взяли настройку

    $ git config --show-origin [property_name]
    

    Удалить настройку

    $ git config [property_type] --unset [property_name]
    

Работа с репозиторием

Создать локальный репозиторий

$ git init

Клонировать удаленный репозиторий

$ git clone [url]

Чтобы клонировать в папку с произвольным именем:

$ git clone [url] [folder_name]

Добавить удаленный репозиторий

$ git remote add [repository_name] [url]

Удалить удаленнный репозиторий

$ git remote remove [repository_name]

Просмотреть список удаленных репозиториев

$ git remote -v

Просмотр удаленного репозитория

$ git remote show [remote-name]

Состояние репозитория

Просмотреть статус файлов в репозитории

$ git status

Работа с файлами в репозитории

Подготовить файлы к коммиту

$ git add [file or folder]

Интерактивное добавление изменений

$ git add -p

Удалить файл из репозитория

$ git rm [file or folder]

Удалить файл из staging area, но оставить в рабочей директории

$ git rm --cached [file]

Переименовать (переместить) файл в репозитории

$ git mv [from] [to]

Работа с ветками

Получить список текущих веток

$ git branch

Создать новую ветку от текущей ветки

$ git branch [new branch name]

Удалить ветку
$ git branch -d <branch>

Создать новую ветку от текущей ветки и сразу перейти на неё

$ git checkout -b [new branch name]

Объединить c текущей веткой
$ git merge <branch> 

Запустить графическй инструмент для решения конфликтов

$ git mergetool

Извлечь данные из репозитория

$ git fetch [<options>] [<repository> [<refspec>…​]]

Работа с коммитами

Фиксация изменений

$ git commit -m "[message]"

Фиксация изменений с подписью

$ git commit -S -m "[message]"

Возвращение к состоянию, соответствующее определенному коммиту

$ git reset [<options>] [<сommit-hash>]

Просмотр истории коммитов

$ git log [<options>] [<revision range>] [[--] <path>...]

Применить изменения из коммита к текущей ветке

$ git cherry-pick <commit-hash>

Создание коммита, который вносит изменения притивоположные изменениям предыдущего коммита

$ git revert <commit-hash>

Cброс индекса и рабочего каталога до последнего состояния коммита

git reset --hard HEAD

Полезные ресурсы

  • https://git-scm.com - основная страница git
  • Learn Enough Git to Be Dangerous - Книга Майкла Хартла, посвященная Git с самых основ
  • Pro Git - великолепная книга Скотта Чакона и Бена Страуба про Git
  • Git Internals - еще одна великолепная книга Скотта Чакона, посвященная Git