/pamyatka

Памятка по командам Git

title author fontsize geometry paper lang template
Памятка по командам Git
А.В. Родионов
14pt
margin=2cm
a4
russian
default.html

Начальные установки

Выполняются один раз для рабочего места, сохраняются в файле конфигурации данного пользователя.

  • git config --global user.name "Имя пользователя" --- задание имени пользователя для последующего фиксирования в коммитах
  • git config --global user.email адрес@почты --- адрес электронной почты
  • git config --global core.editor путь-к-исполняемому-файлу --- выбор программы текстового редактора для ввода сообщений

Сокращенные команды

Для удобства работы в командной строке можно сократить общеупотребительные команды до нескольких первых букв. Для этого нужно выполнить следующие команды:

  • git config --global alias.co checkout
  • git config --global alias.ci commit
  • git config --global alias.st status
  • git config --global alias.br branch
  • git config --global alias.hist 'log --pretty=format:"%h %ad | %s%d [%an]" --graph --date=short'

Команда git co будет соответствовать git checkout, git ci --- git commit, и т.д.

Подготовка к работе

  • git init --- инициализация пустого репозитория в папке

Просмотр изменений

  • git status --- просмотр состояния изменений
  • git log --- история изменений данной ветки
  • git diff --- сравнение изменений по отношению к текущей ветке
  • git diff имя-ветки --- сравнение изменений по отношению к заданной ветке
  • git diff HEAD~2 --- сравнение изменений по отношению 2, 3 и т.д. коммиту от текущего
  • git diff хэш1 хэш2 --- сравнение двух коммитов между собой

Внесение изменений в репозиторий

  • git add . --- индексация изменений в текущей директории
  • git add имя-директории --- проиндексировать изменения в заданной папке
  • git add имя-файла --- проиндексировать изменения в одном файле
  • git add имя-папки-или-файла --all --- проиндексировать все изменения, включая удаления и переименования файлов
  • git commit --- сохранение (коммит) изменений с вызовом редактора для ввода сообщения
  • git commit -a -m 'текст сообщения' --- индексация всех изменений в текущей ветке вместе с сохранением и вводом сообщения
  • git mv имя-файла новое-имя --- переименовать файл в проекте
  • git rm имя-файла --- удалить файл
  • git rm -r имя-директории --- удалить директорию и ее содержимое
  • ключ -f при удалении заставляет игнорировать изменения в файлах.

Управление веткой

  • git checkout хэш-коммита --- перенос ветки в заданное хэшем положение и загрузка версии текущих файлов из этого коммита. Переводит ветку в "безголовое" состояние.
  • git checkout имя-ветки --- выбор существующей ветки и сброс рабочих файлов в состояние ее вершины.
  • git checkout -b имя-ветки --- отвод новой ветки с заданным именем от текущего положения в ветке. Позволяет после возвращения к изменению, найденному с помощью команды git log, продолжить развивать его в новой ветке.
  • git branch -a --- отобразить все ветки
  • git branch -D имя-ветки --- удалить ветку в текущей копии репозитории
  • git merge имя-ветки --- слить изменения из другой ветки в текущую
  • git tag метка --- пометка текущего коммита удобной для запоминания меткой, например "2.0". Команды, ожидающие идентификатор коммита, такие как checkout, reset и revert могут получать метку вместо хэша коммита.
  • git tag -d метка --- удаление заданной метки

Отмена изменений

  • git reset --- отмена действия команд git add до последнего коммита изменений. Изменения и удаление файлов сохраняются
  • git reset --hard --- сброс изменений в файлах текущей ветки до последнего коммита. Изменения и удаления файлов возвращаются до состояния предыдущего коммита.
  • git reset хэш-коммита --- перенос ветки в заданное место по коду хеша. Ветка будет переведена в "безголовое" состояние, для дальнейшей работы потребуется создать новую ветку. Текущие файлы при этом не сбрасываются.
  • git revert имя-коммита ---отмена изменений в текущей ветке до состояния заданного коммита. При этом будет создан в свою очередь коммит, который нужно будет отметить сообщением в логе. Чтобы избежать открытия редактора, можно добавить флаг --no-edit.
  • git revert имя-или-диапазон-коммитов -n --- внесение изменений, отменяющих заданные коммиты без создания коммита. При этом текущее дерево файлов редактируется, как будто это сделал сам пользователь.

Работа с удаленными репозиториями

  • git clone наименование git@github.com:логин/проект.git --- загрузка проекта из удаленного репозитория.
  • git remote add наименование git@github.com:логин/проект.git --- добавление ссылки на удаленный репозиторий. Наименование задает его короткое имя, для основного репозитория обычно выбирается имя 'origin'.
  • git pull --- скачать новые изменения
  • git push --- сохранений коммитов текущей ветки в удаленный репозиторий
  • git push --all --- сохранение всех веток, в том числе новых, в удаленный
  • git push -u origin --all --- сохранение всех веток с одновременной их привязкой к удаленному репозиторию. Выполняется если существующий проект впервые сохраняется в новый репозиторий.
  • git branch -u ветка --- привязка ветки к удаленному репозиторию