Mercurialのコマンド
以下のサイトを参考にしています。
Mercurial(hg)のコマンド一覧
http://d.hatena.ne.jp/Kenji_s/20110203/1296696735
書籍
入門Mercurial 著:藤原 克則
著者のサイト
http://www.lares.dti.ne.jp/~foozy/fujiguruma/scm/mercurial.html
私的に頻繁に使うコマンドやオプションに絞っています。
他にも沢山あるので、他のサイトやヘルプを参照してください。
参考サイトに習い、省略できるコマンドは()内で示します。
ヘルプ
hg help [コマンド名]
指定したコマンド名のヘルプを表示。
コマンド名を省略した場合は、コマンド一覧を表示。
初期化
hg init [パス名]
指定したディレクトリにリポジトリを作成。
パスが省略された場合は、カレントディレクトリにリポジトリを作成する。
コミット
hg commit(ci) [option]
リポジトリにコミットする。
-m | コメントを付ける |
---|---|
-A | リポジトリに登録されていない新規ファイルは追加し、無くなったファイルはリポジトリ登録から除外される |
新規ファイルは追加し、無くなったファイルは管理から除外してコミットする。
> hg ci -A -m "コメント"
ファイル操作
実際には、ファイルを個別に登録や削除は面倒くさくって、コミット時に-Aオプションで済ませてしまう。
追加、削除、管理から除外
hg add [ファイル名] hg remove [ファイル名] hg forget [ファイル名]
ファイル名を変更、ないし移動する
hg rename 変更前 変更後
複製
hg copy(cp)
ただファイルを複製するだけでなく、自動的に変更も反映される。
詳しくは下記参照。
Mercurialのcopyコマンド
http://d.hatena.ne.jp/Kenji_s/20110209/1297238664
指定ファイルの変更箇所を表示
hg diff(di) [option] ファイル名
option
-r | リビジョンを指定する |
---|---|
-c | 指定チェンジセットでの変更箇所 |
リビジョン指定は複数回できる。数に応じて比較対象が異なる。
指定しない場合は、作業領域の前のリビジョンと比較。
1つ指定の場合、作業領域と指定リビジョンの比較。
2つ指定の場合は、指定されたリビジョン間での比較。
> hg di -r 2 -r 4 ファイル名
TortoiseHGを使ってたら、このコマンドはあまり使わない…。
リポジトリ操作
リポジトリを複製する。
hg clone SOURCE DEST
複製されたリポジトリには、連携先としてSOURCEが設定される。
複製されたリポジトリで、pushを行うと、追加されたチェンジセットをSOURCEへ追加される。
複製されたリポジトリにないチェンジセットを複製元から取り込む
hg pull [option]
option
-u | pull後、最新tipへupdateされる |
---|---|
-f | 強制 |
-r | 指定リビジョンまでを取り込む |
pullされるチェンジセットがあるか確認する
hg incoming(in)
pushするチェンジセットがあるか確認する
hg outgoing(out)
タグ
タグの一覧を表示
hg tags
タグを付ける
hg tag [option] タグ名
option
-r | チェンジセットを指定 |
---|---|
-l | ローカルタグとして作成 |
-f | 同名のタグが既にあっても置き換える |
-m | メッセージコメント |
--remove | 削除する |
タグ名を付けると、自動的にチェンジセットが追加される。
> hg tag "タグ名" -m "コメント"
同名タグは付けれず、中止される。強制オプションで置き換えれる。
> hg tag "タグ名"
abort: tag 'タグ名' already exists (use -f to force)
> hg tag -f "タグ名"
タグを削除するには--removeオプションを使う
> hg tag --remove
ブランチ
ブランチ一覧を表示
hg branches
ブランチを作成する
hg branch ブランチ名
ブランチ名を省略した場合は、現在の作業領域のブランチ名が表示される。
ブランチをクローズする
> hg ci --close-branch -m "Close bad branch, this approch never worked!"
hgでは表示上見えなくなるだけで、完全削除はできない。
ブランチを移動する
updateを使う。
> hg update "ブランチ名"
マージ
マージする
hg merge [リビジョン、タグ、ブランチ名など]
作業領域と指定したリビジョンとをマージする。
リビジョン2と3がヘッドで、tip=3の時に、2を3へマージする
hg merge 2
リポジトリにヘッドが2つだけで、一方が作業領域の親リビジョンである場合、対象指定は省略できる。
hg merge
ヘッド
ヘッドとは、リポジトリでの最新チェンジセットの事で、ブランチを分けている場合、マルチヘッド状態になる。
(枝分かれした先に、多少内容が異なるファイルがそれぞれある状態)
マルチヘッドになったら適宜マージする(もちろんしなくても良いが)
ヘッドの一覧を表示する
hg heads
指定ブランチのヘッドを表示するには、ブランチ名を引数に入れる。
> hg heads "ブランチ名"
ロールバッグ
hg rollback
リポジトリに対する直前の操作を取り消す。
取り消せるのは
- hg commit
- hg import
- hg pull
- hg push (push先でhg rollbackする)
- hg tag
- hg unbundle
アーカイブ作成
hg archive [option] [パス名]
option
-t | ファイルタイプを指定。 |
---|---|
-r | リビジョンを指定する。ブランチ名やタグ名でも可。 |
ファイルタイプは以下
files | アーカイブせず展開された状態 |
tar | tar |
tbz2 | tar.bz2 |
tgz | tar.gz |
uzip | zip(圧縮なし) |
zip | zip(圧縮あり) |
またパス名には置換指定ができる
%% | %文字そのもの |
%H | リビジョンのハッシュID(40桁) |
%N | 出力対象数 |
%R | リビジョン番号 |
%b | 現リポジトリのベース名 |
%h | リビジョンのハッシュID(12桁) |
%n | 0詰めされた、1から始まるシーケンス番号 |
%r | 0詰めされた、リビジョン番号 |
現在のチェンジセットをアーカイブ化する
> hg archive -r tip -t zip ..\archive-%b-%R-%h.zip
..\archive-test-2-87f5f92876a1.zipが作成された(もちろん環境によって値は違う)
アーカイブの中は\archive-test-2-87f5f92876a1フォルダがあり、その中にリポジトリに登録されているファイルが入っている。
情報
作業領域のファイル状態を表示する
hg status(st) [option]
option
--rev REV | 指定したチェンジセットとの更新差分を表示 |
--change REV | 指定したチェンジセット時点での更新状態を表示 |
他にも沢山あるのでヘルプ参照。
状態識別子
M | 改変有り(Modified) |
A | 追加予定(Added) |
R | 除外予定(Removed) |
C | 変更無し(Clean) |
! | 管理対象にも関わらず作業領域にファイルが無い(missing) |
? | 管理対象外(unknown) |
I | 無視(Ignored) |
チェンジセットの変更履歴を表示する
hg log [option]
option
-k 検索文字 | キーワード検索。合致したチェンジセットのみ表示 |
---|---|
-r | リビジョン指定(複数回可能) |
-l 数字 | 表示数を制限する |
-b ブランチ名 | 指定ブランチのチェンジセットのみ表示 |
-m | マージしたチェンジセットのみ表示 |
最新チェンジセットから5回前までを表示
hg log -l 5
最新チェンジセットの情報のみを表示する
hg tip
Mercurial管理下のファイル一覧を表示する。
hg manifest [リビジョン]
リビジョンが無指定の場合、作業領域の最新チェンジセットが対象。
管理下のファイルの内で、パターン検索したい場合は
hg local [option]
を使う(詳しくはヘルプ参照)
Mercurialのバージョン表示
hg version
> hg version
Mercurial Distributed SCM (version 2.1.1)
(see http://mercurial.selenic.com for more information)Copyright (C) 2005-2012 Matt Mackall and others
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY of FITNESS FOR A PARTICULAR PURPOSE.