Основные команды Git. Краткий справочник

Что такое Git

Git это распределенная система контроля версий с открытым кодом.

Установка Git

Для установки в Windows загрузим дистрибутив Git отсюда и установим, следуя командам установщика. Для установки в Ubuntu самой последней версии Git необходимо выполнить следующие команды. Сначала добавим PPA репозиторий с последними версиями Git, затем обновим локальный индекс и установим пакет:

sudo add-apt-repository ppa:git-core/ppa
sudo apt-get update
sudo apt-get install git

В дистрибутивах Fedora Git обычно уже предустановлен, но если все же необходимо его установить, для дистрибутивов, начиная с версии 22, достаточно выполнить всего одну команду:

sudo dnf install git

Для более ранних дистрибутивов надо выполнит команду:

sudo yum install git

Пакеты Git находятся в основном репозитории Fedora и поддерживаются в актуальном состоянии, поэтому всегда можно установить практически самую последнюю версию Git.

Настройка Git

Прежде всего укажем информацию о пользователе, которая будет использоваться всеми локальными репозиториями при фиксации изменений:

$ git config --global user.name "[name]"
$ git config --global user.email "[email address]"

Вместо полей [name] и [email address] указываем соответственно свои имя и адрес электронной почты. Учитываем, что при публикации локального кода в публичных репозиториях эти сведения будут доступны любому пользователю.

Создание репозиториев

Создает локальный репозиторий с именем [project-name]:

$ git init [project-name]

Создает локальный репозиторий на основе существующего внешнего (удаленного) репозитория с адресом [url]:

$ git clone [url]

При этом будут загружены и сам проект, и вся история версий проекта.

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

Список всех новых или измененных файлов, предназначенных для фиксации:

$ git status

Показывает измененные, но еще не проиндексированные строки:

$ git diff

Добавляет файл в список отслеживаемых файлов:

$ git add [file]

Показывает отличия между проиндексированной и текущей версиями файла:

$ git diff --staged

Отменяет индексацию файла, но сохраняет сделанные изменения:

$ git reset [file]

Фиксирует изменения и добавляет снимок состояния проиндексированного файла в историю версий:

$ git commit -m "[message]"

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

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

$ git branch

Создает новую ветку с именем [branch-name]:

$ git branch [branch-name]

Переходит на указанную ветку и меняет рабочий каталог:

$ git checkout [branch-name]

Выполняет слияние указанной ветки с текущей веткой:

$ git merge [branch-name]

Удаляет указанную ветку:

$ git branch -d [branch-name]

Рефакторинг имен файлов

Указанные ниже команды позволяют перемещать и удалять файлы, находящиеся под версионным контролем.

Удаляет файл из рабочего каталога и индексирует операцию удаления:

$ git rm [file]

Удаляет файл из индекса, но оставляет его в рабочем каталоге:

$ git rm --cached [file]

Переименовывает файл и индексирует его:

$ git mv [file-original] [file-renamed]

Игнорирование файлов

Для того, чтобы исключить файлы из числа отслеживаемых, шаблоны имен таких файлов и пути к ним указываются в файле .gitignore:

*.log
build/
temp-*
data/*.txt
# шаблон <code>**/</code> доступен в Git >= 1.8.2
data/**/*.shp

Показывает все игнорируемые файлы проекта:

$ git ls-files --other --ignored --exclude-standard

Сохранение фрагментов

Временно сохраняет (прячет) все измененные отслеживаемые файлы, после чего рабочий каталог не содержит изменений:

$ git stash

Восстанавливает самые последние спрятанные файлы с изменениями:

$ git stash pop

Показывает список всех спрятанных изменений:

$ git stash list

Удаляет самые последние изменения из списка спрятанных изменений:

$ git stash drop

Обзор истории

Показывает историю версий для текущей ветки:

$ git log

Показывает историю версий для файла, включая переименования:

$ git log --follow [file]

Показывает изменения между [first-branch] и [second-branch]:

# показывает изменения между [second-branch] и [first-branch]
$ git diff [second-branch] [first-branch]
$ git diff [second-branch]..[first-branch]

# показывает изменения, которые произошли в [first-branch]
# после ответвления [second-branch]
$ git diff [second-branch]...[first-branch]

Показывает метаданные и содержание изменений указанной фиксации:

$ git show [commit]

Отмена фиксаций

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

$ git reset [commit]

Отменяет все фиксации, выполненные после указанной, удаляя также в рабочем каталоге все изменения, сделанные в процессе отменяемых фиксаций:

$ git reset --hard [commit]

Синхронизация изменений

Эти команды синхронизируют состояние удаленного и локального репозиториев.

Загружает всю историю изменений из удаленного репозитория и сохраняет ее локально:

$ git fetch [remote]

Выполняет слияние удаленной ветки с текущей веткой локального репозитория:

$ git merge [remote]/[branch-name]

Загружает все фиксации локальной ветки в удаленный репозиторий:

$ git push [remote] [branch-name]

Загружает всю историю изменений из удаленного репозитория и выполняет слияние удаленной ветки с текущей веткой локального репозитория:

$ git pull [remote]

В качестве источников использовались GitHub git-cheat-sheet https://github.com/cadastreng/training-kit/blob/master/downloads/github-git-cheat-sheet.md и русский перевод 2-го издания книги “Pro Git (Second Edition)” by Scott Chacon and Ben Straub (Apress, 2014) http://git-scm.com/book/ru/v2

Advertisements