training-web.ruГлавнаяКатегорииО насКарта сайтаПоискТёмная тема

Категории

Команды меркуриала hg

Создано: 04 мая 2019Автор: Егор Астапов1436 просмотровСложность: легкий

Теперь о командах Меркуриала. Я покажу вам список блатных команд. Есть мануалы в которых описаны команды, которые вы очень редко будете использовать. Для начала нужно осмотреться. Установите hg - меркуриал. Я покажу вам установку на дебианоподобные операционные системы.


#установка hg на debian, ubuntu
sudo apt-get install mercurial

# файл помощи
hg -h

# описание одной команды
hg add -h

hg version
#Mercurial Distributed SCM (version 4.0)

Запустим в тестовом проекте hg. Теперь создадим несколько файлов для теста.


# создание репозитория, если вы внутри репозитория, то выполняйте эту команду
hg init

# создание репозитория project, если вы внутри репозитория, 
# то выйдите на уровень выше cd ..
hg init project

# создаем файл
echo "test mercurial" > README.me

#если у вас линукс, то установите утилиту tree
sudo apt-get install tree

.hg
├── 00changelog.i
├── requires
└── store

# проверка состояния
hg status
#вывод: ? README.me

Теперь нужно добавить файлы в индекс. Индекс - это файлы добавленные для последующего фиксирования. Если случится коммит, то файлы из индекса попадут в коммит. Перед коммитом всегда проверяют файлы в индексе. Перед коммитом нужно сохранить настройки пользователя: имя пользователя + email. Без этих настроек не получится сделать коммит.


# добавляем файлы в репозиторий
hg add
#вывод: A README.me

# добавляет неотслеживаемые файлы и помечает отсутствующие файлы как удаленные
hg addremove

#Отметьте указанные файлы, чтобы они больше не отслеживались
hg forget file

echo "[ui]" > ~/.hgrc
echo "username = Ivan Ivanov " >> ~/.hgrc

#создание первого коммита
hg commit -m "first revision"

#создание коммита. вам придётся делать описание коммиту своими руками
hg commit

#временное сохранение изменений, аналог git stash:
hg shelve

#вывести список сохраненных изменений
hg shelve --list

#вернуть изменения в рабочий каталог
hg unshelve

#для сохранений можно задать собственные имена
hg shelve --name 
hg unshelve 

Теперь осмотр файлов. Лог - это просмотр коммитов. Комманда hg log выдаст список коммитов. Самый первый коммит который вы увидите - это самый последний коммит. Поледний коммит - самый свежий коммит. Например, changeset: 7:b43f03eb72cc - 7 - это номер коммита, b43f03eb72cc - хеш сумма. По ней вы будете просматривать изменения и откатываться к нужному состоянию. Можно использовать номер коммита или хеш-сумму.

Осмотрим логи


#просмотр логов
hg log

#просмотр логов с подробностями
hg log -v

#просмотр логов c демонстрацией кода
hg log -p

#просмотр несколких коммитов
hg log -r 0:2

#показывает изменение последнего коммита
hg tip

#показ с мельчайшими подробностями
hg tip -vp

#последние изменения с подробностями
hg log -p -r -1

#смена визуального стиля вывода
hg log --style coal
hg log --style gitweb
hg log --style monoblue
hg log --style paper
hg log --style spartan

#просмотр изменений с подробностями
hg export b9a405b8937e
hg log -r b9a405b8937e -p

#чтение файла
hg cat command.sh

#чтение файла из 8 ревизии
hg cat -r 8 command.sh

#чтение файла между 2 ревизиями
hg cat -r 9:8 command.sh

Просмотр изменений не в индексе. Если вы уже добавили файл в индекс, то смотрите при помощи команды hg status


#просмотр изменений
hg diff

#просмотр изменений выбранного файла
hg diff command.sh

echo 'select * from table1;' > text1.txt

#вывод
diff -r 2b2ac0459d10 text1.txt
--- /dev/null   Thu Jan 01 00:00:00 1970 +0000
+++ b/text1.txt Fri May 03 20:41:56 2019 +0300
@@ -0,0 +1,1 @@
+select * from table1;

Команда hg remove - помечает файлы как запланированные для удаления из репозитория. Файлы на диске не будут удалены до тех пор, пока вы не зафиксируете изменения. Ради понимания переключайтесь с одного коммита на другой hg update 0, затем hg update 1. Вы должны в коммитах создать разные по имени файлы.


#удаление файла
hg remove

#перебегаем на самый первый коммит
hg update 0
#вывод
.
└── README.me

#возвращаемся на последний коммит
hg update 1
#вывод
.
├── file6.txt
├── README.me
├── text1.txt
├── text2.txt
├── text3.txt
├── text4.txt
└── text5.txt

Теперь немного о работе с ветками. Нужно уметь создавать ветки hg branch my и переключаться между ветками hg update my.


#обновление до новой головной ревизии
hg update

#рабочий каталог проверяется на наличие незафиксированных изменений
hg update -c

#сброс индекса, файлы с кодом не удаляются
hg update --clean

#отменить незафиксированное слияние (потеря изменения), применять при мержах
hg update --clean my

#Для объединения двух голов
hg merge

#если вы находитесь на ветке default и у вас есть изменения в ветке my,  
#то вы можете принять изменения из ветки my
hg merge my

#коммит после merge
hg commit -m 'Merged changes'

#текущая ветка
hg branch
#default

#создание новой ветки
hg branch my

#список всех веток
hg branches

#Отзыв набора изменений
hg backout

#Отзыв последней ревизии (tip)
hg backout -m 'back out second change' tip

#Отзыв ревизии, не являющейся последней
hg backout --merge -m 'back out second change' 1

#откат выбранного файла до фиксированного изменения
hg revert command.sh

#откат всех файлов до зафиксированного состояния
hg revert --all
hg revert -a

Комментарии

реклама