Решил составить список команд для двух популярных 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 |
Дополнительное чтиво: