-
1. Введение
- 1.1 О системе контроля версий
- 1.2 Краткая история Git
- 1.3 Что такое Git?
- 1.4 Командная строка
- 1.5 Установка Git
- 1.6 Первоначальная настройка Git
- 1.7 Как получить помощь?
- 1.8 Заключение
-
2. Основы Git
-
3. Ветвление в Git
- 3.1 О ветвлении в двух словах
- 3.2 Основы ветвления и слияния
- 3.3 Управление ветками
- 3.4 Работа с ветками
- 3.5 Удалённые ветки
- 3.6 Перебазирование
- 3.7 Заключение
-
4. Git на сервере
- 4.1 Протоколы
- 4.2 Установка Git на сервер
- 4.3 Генерация открытого SSH ключа
- 4.4 Настраиваем сервер
- 4.5 Git-демон
- 4.6 Умный HTTP
- 4.7 GitWeb
- 4.8 GitLab
- 4.9 Git-хостинг
- 4.10 Заключение
-
5. Распределенный Git
-
6. GitHub
-
7. Инструменты Git
- 7.1 Выбор ревизии
- 7.2 Интерактивное индексирование
- 7.3 Припрятывание и очистка
- 7.4 Подпись результатов вашей работы
- 7.5 Поиск
- 7.6 Исправление истории
- 7.7 Раскрытие тайн reset
- 7.8 Продвинутое слияние
- 7.9 Rerere
- 7.10 Обнаружение ошибок с помощью Git
- 7.11 Подмодули
- 7.12 Создание пакетов
- 7.13 Замена
- 7.14 Хранилище учётных данных
- 7.15 Заключение
-
8. Настройка Git
- 8.1 Конфигурация Git
- 8.2 Атрибуты Git
- 8.3 Хуки в Git
- 8.4 Пример принудительной политики Git
- 8.5 Заключение
-
9. Git и другие системы контроля версий
- 9.1 Git как клиент
- 9.2 Миграция на Git
- 9.3 Заключение
-
10. Git изнутри
- 10.1 Сантехника и Фарфор
- 10.2 Объекты Git
- 10.3 Ссылки в Git
- 10.4 Pack-файлы
- 10.5 Спецификации ссылок
- 10.6 Протоколы передачи данных
- 10.7 Обслуживание репозитория и восстановление данных
- 10.8 Переменные окружения
- 10.9 Заключение
-
A1. Приложение A: Git в других окружениях
- A1.1 Графические интерфейсы
- A1.2 Git в Visual Studio
- A1.3 Git в Visual Studio Code
- A1.4 Git в Eclipse
- A1.5 Git в IntelliJ / PyCharm / WebStorm / PhpStorm / RubyMine
- A1.6 Git в Sublime Text
- A1.7 Git в Bash
- A1.8 Git в Zsh
- A1.9 Git в Powershell
- A1.10 Заключение
-
A2. Приложение B: Встраивание Git в ваши приложения
- A2.1 Git из командной строки
- A2.2 Libgit2
- A2.3 JGit
- A2.4 go-git
- A2.5 Dulwich
-
A3. Приложение C: Команды Git
- A3.1 Настройка и конфигурация
- A3.2 Клонирование и создание репозиториев
- A3.3 Основные команды
- A3.4 Ветвление и слияния
- A3.5 Совместная работа и обновление проектов
- A3.6 Осмотр и сравнение
- A3.7 Отладка
- A3.8 Внесение исправлений
- A3.9 Работа с помощью электронной почты
- A3.10 Внешние системы
- A3.11 Администрирование
- A3.12 Низкоуровневые команды
A3.3 Приложение C: Команды Git - Основные команды
Основные команды
Всего несколько команд нужно для базового варианта использования Git для ведения истории изменений.
git add
Команда git add
добавляет содержимое рабочего каталога в индекс (staging area) для последующего коммита.
По умолчанию git commit
использует лишь этот индекс, так что вы можете использовать git add
для сборки слепка вашего следующего коммита.
Это одна из ключевых команд Git, мы упоминали о ней десятки раз на страницах книги. Ниже перечислены наиболее интересные варианты использования этой команды.
Знакомство с этой командой происходит в главе Отслеживание новых файлов.
О том как использовать git add
для разрешения конфликтов слияния написано в главе Основные конфликты слияния.
В главе Интерактивное индексирование показано как использовать git add
для добавления в индекс лишь отдельных частей изменённого файла.
В главе Деревья показано как эта команда работает на низком уровне, чтобы вы понимали, что происходит за кулисами.
git status
Команда git status
показывает состояния файлов в рабочем каталоге и индексе: какие файлы изменены, но не добавлены в индекс; какие ожидают коммита в индексе.
Вдобавок к этому выводятся подсказки о том, как изменить состояние файлов.
Мы познакомили вас с этой командой в главе Определение состояния файлов, разобрали стандартный и упрощённый формат вывода.
И хотя мы использовали git status
повсеместно в этой книге, практически все варианты использования покрыты в указанной главе.
git diff
Команда git diff
используется для вычисления разницы между любыми двумя Git деревьями.
Это может быть разница между вашей рабочей копией и индексом (собственно git diff
), разница между индексом и последним коммитом (git diff --staged
), или между любыми двумя коммитами (git diff master branchB
).
Мы познакомили вас с основами этой команды в главе Просмотр индексированных и неиндексированных изменений, где показали как посмотреть какие изменения уже добавлены в индекс, а какие — ещё нет.
О том как использовать эту команду для проверки на проблемы с пробелами с помощью аргумента --check
можно почитать в главе Правила создания коммитов.
Мы показали вам как эффективно сравнивать ветки используя синтаксис git diff A…B
в главе Определение применяемых изменений.
В главе Продвинутое слияние показано использование опции -w
для скрытия различий в пробельных символах, а также рассказано как сравнивать конфликтующие изменения с опциями --theirs
, --ours
и --base
.
Использование этой команды с опцией --submodule
для сравнения изменений в субмодулях показано в главе Начало работы с подмодулями.
git difftool
Команда git difftool
просто запускает внешнюю утилиту сравнения для показа различий в двух деревьях, на случай если вы хотите использовать что-либо отличное от встроенного просмотрщика git diff
.
Мы лишь вкратце упомянули о ней в главе Просмотр индексированных и неиндексированных изменений.
git commit
Команда git commit
берёт все данные, добавленные в индекс с помощью git add
, и сохраняет их слепок во внутренней базе данных, а затем сдвигает указатель текущей ветки на этот слепок.
Вы познакомились с основами модели коммитов в главе Коммит изменений.
Там же мы продемонстрировали использование опций -a
для добавления всех изменений в индекс без использования git add
, что может быть удобным в повседневном использовании, и -m
для передачи сообщения коммита без запуска полноценного редактора.
В главе Операции отмены мы рассказали об опции --amend
, используемой для изменения последнего совершённого коммита.
В главе О ветвлении в двух словах мы более подробно познакомились с тем, что делает команда git commit
и почему она делает это именно так.
Мы показали вам как подписывать ваши коммиты, используя опцию -S
в главе Подпись коммитов.
И наконец мы заглянули внутрь команды git commit
в главе Объекты коммитов и узнали что она делает за кулисами.
git reset
Команда git reset
, как можно догадаться из названия, используется в основном для отмены изменений.
Она изменяет указатель HEAD
и, опционально, состояние индекса.
Также эта команда может изменить файлы в рабочем каталоге при использовании параметра --hard
, что может привести к потере наработок при неправильном использовании, так что убедитесь в серьёзности своих намерений прежде чем использовать его.
Мы рассказали об основах использования git reset
в главе Отмена индексации файла, где эта команда использовалась для удаления файла из индекса, добавленного туда с помощью git add
.
В главе Раскрытие тайн reset, полностью посвящённой этой команде, мы разобрались в деталях её использования.
Мы использовали git reset --hard
чтобы отменить слияние в главе Прерывание слияния, там же было продемонстрировано использование команды git merge --abort
для этих целей, которая работает как обёртка над git reset
.
git rm
Команда git rm
используется в Git для удаления файлов из индекса и рабочей копии.
Она похожа на git add
с тем лишь исключением, что она удаляет, а не добавляет файлы для следующего коммита.
Мы немного разобрались с этой командой в главе Удаление файлов, показали как удалять файлы из рабочего каталога и индекса и только из индекса, используя флаг --cached
.
Ещё один вариант использования git rm
приведён в главе Удаление объектов, где мы вкратце объяснили как использовать опцию --ignore-unmatch
при выполнении git filter-branch
, которая подавляет ошибки удаления несуществующих файлов.
Это может быть полезно для автоматически выполняемых скриптов.
git mv
Команда git mv
— это всего лишь удобный способ переместить файл, а затем выполнить git add
для нового файла и git rm
для старого.
Мы лишь вкратце упомянули эту команду в главе Перемещение файлов.
git clean
Команда git clean
используется для удаления мусора из рабочего каталога.
Это могут быть результаты сборки проекта или файлы конфликтов слияний.
Мы рассмотрели множество опций и сценариев использования этой команды в главе Очистка рабочего каталога.