回答:
私はこの質問が少し前に回答されたことを知っていますが、それを読んだ後、特定のgit svn branchコマンドの例を追加して、典型的なワークフローに関連付けるのに役立つかもしれません。
kchが答えたように、を使用しますgit svn branch
。以下に完全な例を示します(-n
予行テスト用のに注意してください):
git svn branch -n -m "Branch for authentication bug" auth_bug
これがうまくいくと、サーバーは次のような応答を返します。
https://scm-server.com/svn/portal/trunk at r8914をhttps://scm-server.com/svn/portal/branches/auth_bugにコピーしています ...
-n
スイッチがない場合、サーバーはおそらく次のようなものを追加します。
発見の可能な分岐点:https://scm-server.com/svn/portal/trunk => https://scm-server.com/portal/branches/auth_bug、8914
ブランチの親が見つかりました:(refs / remotes / auth_bug)
d731b1fa028d30d685fe260f5bb912cbf59e1971
do_switchで親をフォロー
親の追跡に成功r8915 = 6ed10c57afcec62e9077fbeed74a326eaa4863b8
(参照/リモート/ auth_bug)
その最も良い部分は、次のようにリモートブランチに基づいてローカルブランチを作成できることです。
git checkout -b local/auth_bug auth_bug
つまり、「名前付きローカルブランチをチェックアウトして作成しauth_bug
、リモートブランチ(最後のパラメーター)をたどります。auth_bug
()を使用dcommit
して、ローカルブランチがそのリモートブランチで動作することをテストします。--dry-run
-n
git svn dcommit -n
そしてSVNサーバーは新しいブランチ名で応答するはずです:
https://scm-server.com/svn/portal/branches/auth_bugにコミットしています ...
git co
してgit checkout
の例では、誰のために働くことができるように
git-svn branch
コマンドには注意が必要な部分があります。この方法で新しいブランチを作成するには、オンラインである必要があります。あなたはオフラインで次の操作を行うことができます。1. git checkout -b foobar
2.ハックハックハック3 git commit -m "Done foobar"
。オンラインの場合、1。2 git svn branch foobar
. git branch --set-upstream foobar remotes/foobar
3.を実行してこの変更をプッシュしますgit svn dcommit
。
git checkout -b foobar-new remotes/foobar
ます。3. git checkout foobar
4. git rebase foobar-new
5.ブランチがsvnブランチにコミットすることを確認するためのテスト。git svn dcommit --dry-run
6.最後に、実際にコミットgit svn dcommit
7.削除一時支店git branch -D foobar-new
@kch私は(2008年12月7日)gitのv1.6.1-rc1タグをコンパイルしましたが、それにはgit svn branchコマンドとそのドキュメントが含まれています。したがって、gitのv1.6.1リリースには、(うまくいけば)このコマンドが含まれているはずです。