すべてのチートシート

SVN コマンドチートシート

Subversion (SVN) コマンドを素早く参照:checkout、update、commit、branch / tag、merge、履歴の確認、リポジトリ管理 — よく使うオプションと実用例をまとめました。

28 コマンド

はじめに

svn checkout <url> [<dir>]

リポジトリから作業コピーをチェックアウト;プロジェクト ファイルを最初に取得するときに使います。

-r <rev> 特定のリビジョン; --depth empty|files|immediates|infinity

svn checkout https://svn.example.com/repo/trunk ./my-project
svn info

作業コピー / URL の情報を表示:URL、リビジョン、最終更新日時など。

svn info .

日常の操作

svn update

作業コピーをリポジトリと同期;サーバの変更をマージする場合もあります。

-r <rev> 特定のリビジョンに更新; --accept postpone|base|mine-full|theirs-full|edit|launch

svn update --accept postpone
svn status

作業コピーの状態を表示:変更、追加、削除、未追跡ファイル。

-u サーバの古い情報を表示; -v 詳細; --quiet 未追跡を抑制

svn status -u
svn add <path>

次のコミットで追加するファイル / ディレクトリを予約します。

-N 非再帰(ディレクトリのみ); --force 既にバージョン管理下でも追加

svn add src/utils/ helpers/
svn delete <path>

作業コピーからファイル / ディレクトリを削除し、次コミットで削除予約します。

--keep-local 作業コピー側に残す(サーバでは削除しない)

svn delete obsolete/old-config.json
svn commit -m "<msg>"

ログ メッセージと共にローカルの変更をリポジトリに送信します。

-m インライン メッセージ; -F <file> ファイルから読み込み; --no-unlock ロック維持

svn commit -m "feat: add login form validation"
svn diff

パス間 / リビジョン間の unified diff を表示。

-r <rev1>:<rev2> リビジョン比較; -c <rev> あるリビジョンの変更; --diff-cmd / -x

svn diff -r HEAD~5:HEAD --summarize
svn revert <path>

ローカル編集を破棄し、ファイル / ディレクトリを元の状態に戻します。

-R 再帰; --depth infinite

svn revert -R .

ブランチ / タグ

svn copy <src> <dst>

リポジトリ内でコピーしてブランチ / タグを作成(チープ コピー)。

-r <rev> 特定のリビジョンから; -m メッセージ

svn copy ^/trunk ^/branches/feature-x -m "branch: feature-x"
svn switch <url>

再チェック アウトせず作業コピーを別ブランチ / タグに向けます。

-r <rev> 特定のリビジョンへ; --relocate URL 接頭辞を書換

svn switch ^/branches/feature-x
svn list <url>

チェック アウトせずリポジトリのディレクトリの内容を一覧。

-v 詳細; -r <rev>

svn list -v ^/tags/

マージ / 競合

svn merge <url[@rev]>

2 つのソース / ブランチ間の差分を作業コピーに適用します。

-c <rev> / -r <rev1>:<rev2> 対象リビジョン; --record-only マージ追跡のみ

svn merge ^/trunk -c 12345
svn merge --reintegrate <url>

機能ブランチを発生元ブランチへ再統合(レガシー、1.8 以前)。

svn merge --reintegrate ^/branches/feature-x
svn resolve <path>

マージ / 更新後の競合ファイルを解消します。

--accept base|mine-full|theirs-full|working|theirs-conflict|theirs-full

svn resolve --accept theirs-full conflict.txt

履歴 / 確認

svn log

ファイル / リポジトリのコミット ログを表示します。

-r <rev1>:<rev2> 範囲; -l <n> 件数制限; -v パス詳細; --xml

svn log -l 20 -v
svn blame <file>

ファイルの各行について作者とリビジョンを表示(praise / annotate)。

-r <rev> 指定リビジョン時点; -v リビジョン内容も表示

svn blame src/index.ts | tail -20
svn cat <url>[@rev]

チェック アウトせず、特定 URL / リビジョンのファイル内容を表示。

svn cat ^/trunk/README.md@HEAD

プロパティ / ロック

svn propset <prop> <value> <path>

ファイル / ディレクトリにプロパティを設定(svn:ignore、svn:executable、svn:mime-type など)。

-F <file> 値ファイルから; --revprop リポジトリ revprop

svn propset svn:ignore "node_modules\n.DS_Store" .
svn propedit <prop> <path>

プロパティ値をエディタで開き編集します。

svn propedit svn:ignore .
svn lock <target>

他クライアントが変更コミットできないようファイルをロック(サーバ設定が必要)。

-m "理由"; --force ロックを奪う

svn lock images/banner.png -m "editing before release"
svn unlock <target>

ファイル / ディレクトリのロックを解除します。

--force 他者のロックを破棄

svn unlock images/banner.png

リポジトリ / クリーンアップ

svn cleanup

作業コピーを整理:ロック トークン削除、タイムスタンプ修正、保留操作の完了。

--diff3-cmd / --remove-unversioned 未追跡も整理

svn cleanup /path/to/wc
svn export <url> [<dir>]

.svn メタデータ無しでディレクトリ ツリーをエクスポート — パッケージングに便利。

-r <rev> 特定リビジョン; --force 既存を上書き

svn export ^/tags/v1.2.0 ./release-1.2
svn import <path> <url> -m "<msg>"

バージョン未管理ツリーを 1 回の初期コミットとしてリポジトリに追加します。

--no-ignore 無視ファイルも対象; --auto-props auto-props 適用

svn import ./src ^/trunk -m "initial import"
svn relocate <from-prefix> <to-prefix>

作業コピーに保存されたリポジトリ URL の接頭辞を書換(サーバ移転時)。

--strict 接頭辞不一致を拒否

svn relocate https://old.svn.example.com https://new.svn.example.com

パッチ

svn diff > patch.diff

共有 / svn patch で適用するための unified diff を生成。

svn diff > /tmp/feature-x.patch
svn patch <patch-file>

svn diff が生成した unified diff を作業コピーに適用します。

--dry-run プレビュー; --reverse-cmd

svn patch --dry-run /tmp/feature-x.patch

チートシート バージョン 1.0.0

SVN 1.10+ に対応