[解決済み] TortoiseSVNでブランチとマージを行う最も簡単な方法は何ですか?
質問
TortoiseSVN を使ってブランチやマージを行うための、とても簡単な方法は何でしょうか?
どのように解決するのですか?
作業ディレクトリがトランクから作業していると仮定して。
ルート作業フォルダーを右クリックし、次の操作を行います(この用語は常に Windows エクスプローラーを指します)。
svn update
を実行して、作業フォルダーを最新のトランクに更新します。
あなたが持っているものが安定していることを確認します。
ルートワークフォルダを右クリックし
svn commit
を実行して、ローカルでの変更がトランクにコミットされることを確認してください。
ルートワークフォルダを右クリックし
svn repo-browser
.
リポジトリにまだbranchesフォルダがない場合: trunkフォルダのすぐ上のフォルダを右クリックし、"create folder"を実行してbranchesフォルダを作成します(たとえば、trunkが
http://myserver/svn/MyRepository/MyProj/Trunk
である場合、次のように作成します。
http://myserver/svn/MyRepository/MyProj/Branches
).
trunk フォルダを右クリックして、次のようにします。
Copy To:
と入力し、ブランチの新しいフォルダー名を入力してください。たとえば
http://myserver/svn/MyRepository/MyProj/Branches/MyNewBranch
. (これは多くのスペースを浪費するので心配しないでください...これは "cheap copy" と呼ばれています...ファイルが変更されない限り、ファイルの内容を実際にコピーすることはありません).
レポブラウザを閉じます。
作業フォルダルートを右クリックし、実行します。
svn switch
と入力し、新しいブランチのフォルダー名を選択します(例.
http://myserver/svn/MyRepository/MyProj/Branches/MyNewBranch
). 他はデフォルトのままにしておきます。
それでは、ブランチで作業してみましょう。マイルストーンに到達したら、ルートのワークフォルダを右クリックして
svn commit
を実行して、ブランチにコミットしてください。(これはトランクには表示されません)。
他の人が同じブランチで作業している場合、定期的に
svn update
をルートワークフォルダから実行してください。これはブランチから更新されます。(トランクからの更新はありません)。
他の人が同じブランチで作業していようがいまいが、定期的にトランクからの変更をマージして、自分のブランチの統合が後で大変にならないようにすべきです。定期的なマージを行うには、作業フォルダーのルートを右クリックして
svn merge
. リビジョンの範囲をマージする]を選択します。"マージ元のURL"で、トランクを選択します(例,
http://myserver/svn/MyRepository/MyProj/Trunk
). 次のようにします。
リビジョン範囲
を空白にし、他はすべてそのままにします。次へ]をクリックします。すべてをそのままにして、[次へ]をクリックします。
マージ
. すべてがまだ動作することを確認し、動作しない場合は修正します。満足したら、通常の
svn update
を実行し、ブランチから更新します (これはブランチで作業しているのがあなた一人であっても、SVN を満足させるために必要です)。次に
svn commit
を実行して、マージされたトランクの変更をブランチにコミットします。このステップは定期的に何度でも繰り返すことができます。
ブランチを統合する準備ができたら、最後にもう一度上記のステップを行い、最終テストを行います。ブランチへの最終コミットを行います。
ルートワークフォルダを右クリックして、もう一回
svn switch
を実行し、今度はトランクに切り替えます (例,
http://myserver/svn/MyRepository/MyProj/Trunk
). これは本質的に、ブランチで行ったすべての作業を取り消す効果がありますが、心配しないでください...あなたは自分の作業を取り戻すことができます。(ブランチで変更していないファイルへの更新もたくさん報告されますが、これは単なる "SVN property" の変更ですので、気にしないでください)。
作業フォルダを右クリックし
svn merge
. 今回は、"ブランチの再統合"を選択します。URLには、あなたのブランチを入れてください(例.
http://myserver/svn/MyRepository/MyProj/Branches/MyNewBranch
). 残りはそのままにして、[次へ]をクリックします。すべてそのままにして
マージ
. これで、ブランチで行ったすべての作業と、トランクからの最新の作業が揃いました。
最終テストを行います。ブランチでの最後のテストと同じファイルセットであるため、すべてがうまくいくはずです。ルートワークフォルダを右クリックして
svn commit
. ブランチで作業していないファイルも含め、すべてをコミットしてください(これらのファイルには "SVN property" の変更があるだけですが、コミットすることでSVNがすべてのリビジョンを追跡することができます)。
トランクには、ブランチでの作業と、ブランチで作業している間にトランクで行われた作業がすべて入っており、すべて動作するようになりました。さらに、SVN はすべてのファイルの完全な履歴を持ち、あなたがブランチで作業している間にチェックインされたリビジョンさえも持っています。
オプション: Repo-browser に入り、ブランチフォルダを右クリックします (例,
http://myserver/svn/MyRepository/MyProj/Branches/MyNewBranch
を右クリックし、"delete" を実行してください。これでトランクには何の影響も与えず、ブランチはもう必要なくなります。(本当に必要であれば、いつでも Repo ブラウザから削除したブランチを取り戻すことができますので、本当に偏執的な方でもご安心ください)。
お気軽にコメントください!
関連
-
[解決済み] Gitブランチをローカルやリモートで削除するには?
-
[解決済み] git pull」と「git fetch」の違いは何ですか?
-
[解決済み] Git のリモートブランチを作成する方法を教えてください。
-
[解決済み] Git で現在のブランチ名を取得するには?
-
[解決済み] 履歴のある SVN リポジトリを新しい Git リポジトリに移行するにはどうすればよいですか?
-
[解決済み] Subversionリポジトリにおける「branch」、「tag」、「trunk」の意味とは?
-
[解決済み】"git pull" でローカルファイルを強制的に上書きするには?
-
[解決済み】Gitで複数のコミットの著者名やコミッター名、Eメールを変更する方法は?
-
[解決済み】ローカルのGitブランチの名前を変更するには?
-
[解決済み] svn には `revert-all` コマンドがありますか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] svn diff で2つのリビジョン間の非空白行の変更点のみを表示させる方法
-
[解決済み] SVNリポジトリURLの変更
-
[解決済み] ブランチを作成する方法を教えてください。
-
[解決済み] TortoiseSVNでブランチやマージを行うにはどうしたらいいですか?[クローズド]
-
[解決済み] svn には `revert-all` コマンドがありますか?
-
[解決済み] SVN: ファイルを「コミットしない」とマークする方法はありますか?
-
[解決済み] Subversionで2つの特定のリビジョンの違いを出力するにはどうしたらいいですか?
-
[解決済み] SVN 405 メソッドが許可されていない
-
[解決済み] Subversionのステータスシンボル「~」は何を意味しているのですか?
-
[解決済み] SVN+SSHでssh-addを毎回する必要はない?(Mac OS)