git-svn:git経由で新しいsvnブランチを作成するにはどうすればよいですか?


193

私はsvnリポジトリを追跡するgitリポジトリを持っています。を使用してクローンを作成しました--stdlayout

私は新しいローカルブランチを作成しました git checkout -b foobar

今、私はこのブランチを…/branches/foobarsvnリポジトリに入れたいと思っています。

どうすればいいですか?

(多くの調査テキストを省略しました。気になったら質問履歴を参照してください)


回答:


280

私はこの質問が少し前に回答されたことを知っていますが、それを読んだ後、特定の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にコミットしています ...


2
ええ、git coはJesperがgitエイリアスを設定したことを意味します。
Jason Axelson、2010年

3
更新して交換git coしてgit checkoutの例では、誰のために働くことができるように
ジェスパーロン・イェンセン

5
私はすでにこの回答に賛成票を投じましたが、何度も戻ってくるのかわかりません。ありがとうございました!
Ben Doerr、2011年

35
git-svn branchコマンドには注意が必要な部分があります。この方法で新しいブランチを作成するには、オンラインである必要があります。あなたはオフラインで次の操作を行うことができます。1. git checkout -b foobar2.ハックハックハック3 git commit -m "Done foobar"。オンラインの場合、1。2 git svn branch foobar. git branch --set-upstream foobar remotes/foobar3.を実行してこの変更をプッシュしますgit svn dcommit
vadishev 2012

2
したがって、ステップ2をに置き換えgit checkout -b foobar-new remotes/foobarます。3. git checkout foobar4. git rebase foobar-new5.ブランチがsvnブランチにコミットすることを確認するためのテスト。git svn dcommit --dry-run6.最後に、実際にコミットgit svn dcommit7.削除一時支店git branch -D foobar-new
jjcf89

64

git v1.6.1以降git svn branchで利用可能です。

git docsから:

    ブランチ
        SVNリポジトリにブランチを作成します。

        -m、-message
            コミットメッセージを指定できます。

        -t、-tag
            branch_subdirの代わりにtags_subdirを使用してタグを作成します
            git svn init中に指定されます。

以前のバージョンのgitでは、svnブランチを作成する方法が提供されていませんでした。


4

@kch私は(2008年12月7日)gitのv1.6.1-rc1タグをコンパイルしましたが、それにはgit svn branchコマンドとそのドキュメントが含まれています。したがって、gitのv1.6.1リリースには、(うまくいけば)このコマンドが含まれているはずです。


確かに、私は1.6.1を今インストールし、コマンドは利用可能です。それに応じて私の答えを更新しました。
2009年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.