Справочник по Git и Mercurial Программирование 18.10.2010

git_hg.png Решил составить список команд для двух популярных DVCS: git и mercurial с целью подсмотреть когда что-то забуду. За бортом остались некоторые команды, которые со временем добавлю.

Также есть ссылки на интеграцию git или mercurial в систему управления тикетами Trac.

Если вы только начинаете знакомится с системами управления версиями, то хороший старт будет статья - Системы управления версиями для Linux

Описание Git Mercurial
установка sudo apt-get install git-core pip install Mercurial
инициализация репозитория в текущем каталоге git init hg init
клонирование удаленного репозитория git clone git://host.org/project.git hg clone http://host.org/project
добавление нового файла git add new_filename hg add new_filename
удаление файла/директории из рабочей директории git rm filename hg rm filename
перемещение файла/директории git mv from  to hg mv from  to
состояние рабочей директории git status hg st
коммитим локальные изменения git commit -am "message" hg ci -m "message"
изменения в отслеживаемых файлах git diff hg diff
кто и что менял в файле filename git blame filename hg blame -u filename
история изменений git log hg log
графический лог изменений git log --graph --pretty=oneline hg log --style compact
изменения между ревизией REV_ID1 и REV_ID2 git diff REV_ID1  REV_ID2 hg diff -rREV_ID1  -rREV_ID2
показать конкретный файл filename из ревизии REV_ID git show REV_ID:filename hg cat -rREV_ID  filename
вернутся к предыдущему состоянию рабочей директории git reset --hard hg revert -a --no-backup
внесение исправлений в последний коммит git commit -a --amend
получить файл filename из ревизии REV_ID git checkout REV_ID filename hg revert -rREV_ID  filename
список всех веток git branch см. тут
создание ветки branch_name git branch branch_name см. тут
удаление ветки branch_name git branch -d branch_name см. тут
переключение на ветку branch_name git checkout branch_name см. тут
слияние веток branch_name1 и branch_name2 git checkout branch_name1
git merge branch_name2
см. тут
получаем последние обновления из origin (удаленного репозитория) (без слияния с текущем состоянием) git fetch hg pull
получаем последние обновления из origin репозитория) (с слиянием с текущем состоянием) git pull hg fetch или hg pull -u
push'им изменения в origin git push hg push
помечаем текущую ревизию тегом tag_name git tag tag_name hg tag tag_name
смотрим какие изменения уйдут в удаленный репозиторий git fetch ; git log FETCH_HEAD..master hg out
смотрим какие изменения придут из удаленного репозиторий git fetch ; git log master..FETCH_HEAD hg in
связь с meld
#еще один хороший gui-инструмент для слияния файлов Diffuse
How to: Meld for Git diffs in Ubuntu Hardy достаточно прописать в секции ui, свойство merge=meld
GUI-интерфейсы Небольшой обзор GUI интерфейсов для git

hgview

Graphical user interfaces

веб-интерфейс Способ №1.

git instaweb --httpd apache2

Способ №2.

Воспользоваться git-serve

cd project
hg serve
раздача репозитория с локальной машины

Запускаем git-демон:

cd project
git daemon --reuseaddr --base-path=. --export-all --verbose

Клонирование репозитория:

git clone git://192.168.0.103/.git project

Запуск сервера:

cd project
hg serve

Клонирование репозитория:

hg clone http://192.168.0.103:8000/ project
настройка раздачи репозитория на сервере Git on the Server
объединяем git или hg с Trac Installing Trac and Git on Debian lenny
дополнительное чтиво
мои конфиги .gitconfig .hgrc

Дополнительное чтиво:

Цитата
Когда стоишь в кругу кого-то, то ты стоишь к кому-нибудь спиной.Каких бы ты ни делал поворотов - найдутся недовольные тобой.
Матковский
Категории
Архив