Решил составить список команд для двух популярных 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 | |
| веб-интерфейс |
Способ №1.
git instaweb --httpd apache2 Способ №2.Воспользоваться git-serve |
cd project hg serve |
| раздача репозитория с локальной машины |
Запускаем git-демон: cd projectgit daemon --reuseaddr --base-path=. --export-all --verbose Клонирование репозитория: git clone git://192.168.0.103/.git project |
Запуск сервера: cd projecthg 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 |
Дополнительное чтиво: