Команда hg в Linux
Полный справочник команд Linux
hg — это инструмент командной строки для распределённой системы контроля версий Mercurial. Mercurial — это лёгкая распределённая система контроля версий, написанная на Python. Она похожа на Git, но имеет более простой дизайн.
Основные понятия hg
Система контроля версий
Система контроля версий (VCS) используется для отслеживания истории изменений файлов и поддержки совместной разработки несколькими людьми. Она делится на централизованные системы (например, SVN) и распределённые системы (например, Git, Mercurial).
Распределённая vs централизованная
- Распределённая: У каждого разработчика есть полная копия репозитория и его истории.
- Централизованная: Только один центральный репозиторий хранит всю историю.
Возможности Mercurial
- Простой и интуитивно понятный дизайн команд
- Высокая производительность при работе с большими проектами
- Кроссплатформенная поддержка
- Расширяемая система плагинов
hg: Установка и настройка
Способы установки
Пример
# Ubuntu/Debian
sudo apt-get install mercurial
# CentOS/RHEL
sudo yum install mercurial
# macOS (с использованием Homebrew)
brew install mercurial
sudo apt-get install mercurial
# CentOS/RHEL
sudo yum install mercurial
# macOS (с использованием Homebrew)
brew install mercurial
Базовая конфигурация
Правка~/.hgrcфайл:
Пример
[ui]
username = Ваше имя
username = Ваше имя
hg: Основные команды с пояснениями
Операции с репозиторием
Пример
# Инициализация нового репозитория
hg init project_name
# Клонирование существующего репозитория
hg clone https://example.com/repo
hg init project_name
# Клонирование существующего репозитория
hg clone https://example.com/repo
Отслеживание файлов
Пример
# Добавить файл в систему контроля версий
hg add filename
# Просмотреть статус репозитория
hg status
# Зафиксировать изменения
hg commit -m "сообщение коммита"
hg add filename
# Просмотреть статус репозитория
hg status
# Зафиксировать изменения
hg commit -m "сообщение коммита"
Управление ветками
Пример
# Создать новую ветку
hg branch branch_name
# Переключить ветки
hg update branch_name
# Просмотреть все ветки
hg branches
hg branch branch_name
# Переключить ветки
hg update branch_name
# Просмотреть все ветки
hg branches
История изменений
Пример
# Просмотреть историю коммитов
hg log
# Просмотреть историю изменений конкретного файла
hg log filename
# Показать содержимое изменений
hg diff
hg log
# Просмотреть историю изменений конкретного файла
hg log filename
# Показать содержимое изменений
hg diff
Удалённые операции
Пример
# Получить удалённые изменения
hg pull
# Отправить локальные изменения
hg push
# Просмотреть удалённые репозитории
hg paths
hg pull
# Отправить локальные изменения
hg push
# Просмотреть удалённые репозитории
hg paths
Расширенное использование hg
Отмена изменений
Пример
# Откатить изменения рабочего каталога
hg revert filename
# Откатиться к определённой версии
hg update -rrevision_number
hg revert filename
# Откатиться к определённой версии
hg update -rrevision_number
Слияние ветвей
Пример
# Слить другую ветку в текущую ветку
hg merge branch_name
# После разрешения конфликтов пометить как разрешённые
hg resolve -mfilename
hg merge branch_name
# После разрешения конфликтов пометить как разрешённые
hg resolve -mfilename
Тегирование
Пример
# Создать тег
hg tag tag_name
# Просмотреть все теги
hg tags
hg tag tag_name
# Просмотреть все теги
hg tags
Сравнение hg и Git
| Характеристика | hg (Mercurial) | Git |
|---|---|---|
| Кривая обучения | Более пологая | Более крутая |
| Дизайн команд | Более последовательный | Более гибкий |
| Модель ветвления | Именованные ветки | Легковесные ветки |
| Поддержка Windows | Хорошая встроенная поддержка | Требуется Git Bash |
| Система плагинов | Мощный | Мощный |
Примеры практического применения
Пример 1: Создание нового проекта
Пример
# 1. Создайте каталог проекта
mkdir myproject
cd myproject
# 2. Инициализируйте репозиторий
hg init
# 3. Создайте файлы и добавьте их
echo "Hello World" > README.txt
hg add README.txt
# 4. Сделайте коммит начальной версии
hg commit -m "Начальный коммит"
mkdir myproject
cd myproject
# 2. Инициализируйте репозиторий
hg init
# 3. Создайте файлы и добавьте их
echo "Hello World" > README.txt
hg add README.txt
# 4. Сделайте коммит начальной версии
hg commit -m "Начальный коммит"
Пример 2: Рабочий процесс командной работы
Пример
# 1. Клонируйте удалённый репозиторий
hg clone https://team-server.com/project
# 2. Создайте ветку для функции
hg branch feature-x
hg commit -m "Начало работы над функцией X"
# 3. После разработки отправьте на сервер
hg push --new-branch
# 4. Другие участники получают обновления
hg pull
hg update feature-x
hg clone https://team-server.com/project
# 2. Создайте ветку для функции
hg branch feature-x
hg commit -m "Начало работы над функцией X"
# 3. После разработки отправьте на сервер
hg push --new-branch
# 4. Другие участники получают обновления
hg pull
hg update feature-x
Решения типичных проблем
Проблема 1: Зафиксировано некорректное содержимое
Пример
# Откат к последнему коммиту
hg rollback
# Или создайте обратное изменение
hg backout wrong_commit_id
hg rollback
# Или создайте обратное изменение
hg backout wrong_commit_id
Проблема 2: Конфликты слияния
- Файлы конфликтов будут содержать маркеры
- Отредактируйте файл, чтобы разрешить конфликты
- Отметить как разрешённый
- Завершите коммит слияния
Пример
hg resolve -mФайл с конфликтом
hg commit -m "Конфликт слияния разрешён"
hg commit -m "Конфликт слияния разрешён"
Задача 3: Восстановление удалённых файлов
Пример
# Просмотр истории удалений
hg log --removed
# Восстановление файла из определённой версии
hg revert -rrevision_number filename
hg log --removed
# Восстановление файла из определённой версии
hg revert -rrevision_number filename
Рекомендации по лучшим практикам
- Коммитьте часто: Делайте коммиты небольшими шагами, каждый коммит должен быть атомарным
- Описательные сообщения: Сообщения коммитов должны чётко описывать изменения
- Стратегия ветвления: Используйте разные стратегии для долгоживущих веток (например, development, release) и короткоживущих feature-веток
- Регулярная синхронизация: Часто выполняйте pull/push, чтобы оставаться синхронизированными с командой
- Резервное копирование важных веток: Отправляйте критически важные ветки на удалённый сервер
Рекомендуемые учебные ресурсы
- Официальная документация:https://www.mercurial-scm.org/guide
- Электронная книга "Mercurial: The Definitive Guide"
- Встроенная справка hg:
hg helpилиhg help 命令名 - Интерактивное руководство:https://hginit.com/
Освоив команды hg, вы сможете эффективно управлять версиями проекта и сотрудничать с командой. Хотя Git сейчас более популярен, простая архитектура Mercurial делает его отличным выбором в определённых сценариях.
Другие расширения