Mercurial と Git コマンドの比較
Mercurial の特徴
Mercurial - 分散型バージョン管理システム(Linux)
TortoiseHg - Mercurial 分散型バージョン管理システム用ツール(Linux)
TortoiseHg - Mercurial 分散型バージョン管理システム用ツール(Windows)
TortoiseHg - Mercurial 分散型バージョン管理システム用ツール(Mac)
- Python で実装されたクロスプラットフォームの分散型バージョン管理システム
 - ライセンスは GPL v2
 - コマンドラインのフロントエンドの名称である「hg」という名前でも呼ばれている
 - Windows 向けの公式 GUI クライアント「TortoiseHg」も開発されている
 - 高度なブランチ機能とマージ機能
 - Web インターフェイス
 - 他のバージョン管理システムで管理されたソースコードを取り込む機能
 - ネットワークが利用できない環境でもバージョン管理を行うことが可能
 
Git の特徴
- 分散型バージョン管理システム
 - ライセンスは GPL v2
 - Linuxカーネルのソースコード管理に用いるためにリーナス・トーバルズによって開発された
 - 中心リポジトリにアクセスできない環境でも履歴の調査や変更の記録といったほとんどの作業を行うことができる
 
コマンド比較
| Mercurial | Git | 説明 | 補足 | 
|---|---|---|---|
 hg clone  |  git clone  | リポジトリをクローン | |
 hg add <file>  |  git add <file>  | ファイルを登録 |  Mercurial は新規登録されるファイル以外は add 不要 Git はコミットのたびに変更ファイルの add が必要  | 
	
 hg add  |  git add .  | すべてのファイルを登録 | |
 hg addremove  | - | 次回コミットを実行する際に追加または削除されるファイルを登録 | 未登録のファイル(?)は hg add、削除されたファイル(!)は hg remove する | 
 hg remove <file>  |  git rm <file>  | ファイルを削除 | |
 hg rename/move  |  git mv  |  ファイル名を変更 copy + remove と同じ  | |
 hg diff  |  git diff 
(add前) git diff –cached (add後)  | 差分確認 | |
 hg revert  |  git checkout --force git checkout . git checkout -- * git reset --hard origin/master  | ファイルやディレクトリを以前の状態に復旧 | |
 hg status  |  git status  | ローカルのリポジトリで更新があったファイルの一覧を表示 | |
 hg update [-C]
 |  git merge origin/master  | 作業ディレクトリをリポジトリの最新内容に更新 | |
 hg tags  |  git tag  | タグの一覧を表示 | |
 hg branch <branch name>  |  git checkout -b <branch name>  | ブランチの作成 | |
 hg update <branch name>
 |  git checkout <branch name>  | ブランチの切替 | |
 hg commit --close-branch  |  git branch --delete <branch name>  | ブランチの削除/閉鎖 |  Mercurial は閉鎖という概念 Git はブランチの削除  | 
	
 hg update <branch name>
hg commit
 |  git reflog git branch <branch name> HEAD@<番号>  | 削除/閉鎖 されたブランチの復旧 |  Mercurial は非アクティブの branch を復活させる Git はブランチをもどすイメージ  | 
	
 hg branches  |  git branch  | ローカルブランチを表示 | |
| - |  git branch -a  | リモートブランチを表示 | Mercurial は取り込みが必要 | 
 hg pull -update
 |  git branch <branch name> /origin/<branch name>  | リモートブランチをローカルへ取り込む |  Mercurial は全てのブランチをローカルに展開 Git は特定のブランチのみをローカルに展開  | 
	
 hg pull –update
 |  git pull git fetch git merge /origin/<branch name>  | 変更差分の取り込み | Mercurial はブランチのローカル取り込みと作業ディレクトリのリポジトリ最新内容に更新を同時に行う | 
 git pull --tags  | リモートのタグを取得 | ||
 hg merge  |  git stash save -u git merge origin/<branch_name> git stash pop  | ローカルリビジョンと指定リビジョンのマージ |  Mercurial はコンフリクトしたら手動修正 Git は git stash list で stash した list の確認、コンフリクトしたら手動修正  | 
	
 hg merge <branch name>  |  git merge origin/<branch name>  | ブランチ間のマージ | |
 hg commit  |  git commit -a  | ローカルリポジトリにコミット | |
 hg push  |  git push  | コミットした変更をリポジトリサーバに反映 | |
 git push --tags  | ローカルのタグをリモートに push | ||
 hg annotate/blame <file>  |  git blame <file>  | チェンジセットを行ごとに表示 | |
 hg cat <file> hg cat -r <revision> -o <out file> <file>  |  git cat-file -p <revision>:<file>  | ファイルを出力 | |
 hg log  |  git log  | 全てのリポジトリまたはファイルの変更履歴を表示 | |
 hg help  |  git help  | ヘルプを表示 | |
 hg convert  | - | 別 SCM のリポジトリから Mercurial リポジトリへの変換 | Mercurial は convert プラグインを有効化する必要がある | 
 git clone --recursive <url>  | submodule をクローン | ||
 git clone
cd <directory>
git submodule update --init --recursive
 | submodule をクローンし忘れた場合 |