[英]Git-svn: create & push a new branch/tag?
使用帶有-s
選項的git-svn克隆SVN存儲庫( git svn clone http://server/repo -s
)之后,如何創建分支或標記並將其推送到存儲庫中的相關分支/標記目錄什么時候dcommit
?
例如; 如果我使用git在本地創建一個foobar
分支( git checkout -b foobar
)我怎么能讓git-svn在服務器上創建分支( http://server/repo/branches/foobar
)?
我正在使用Git 1.5.5.6。
請注意:
下面接受的方法不適用於Git 1.5.5.6,因為沒有git svn branch
方法。 我仍在尋找解決方案,不涉及直接使用svn。
您可以閱讀本教程中的所有細節,但要點基本上如下:
$ git svn branch -m "Topic branch" my_topic # Create SVN branch called "my_topic"
$ git checkout --track -b my-topic remotes/my_topic # Create the Git branch for "my_topic"
# Hack hack hack...
$ git svn dcommit --dry-run # Make sure you're committing to the right SVN branch
$ git svn dcommit # Commit changes to "my_topic" branch in SVN
如果您在subversion分支存在之前創建了本地分支,並且現在想要將本地分支推送到subversion分支,則可以執行以下操作:
獲取分配給本地分支的svn分支修訂
$ git svn info
從輸出中, URL
字段將是當前的svn分支路徑,而Revision
字段將是subversion版本號
從您創建本地分支的修訂版創建svn分支
$ svn cp http://svn-repo/my_app/trunk@123 http://svn-repo/my_app/branches/feature1
獲取新的svn分支,以便你的git repo知道它
$ git svn fetch
svn分支現在應該作為遠程添加到你的git repo $ git branch -a * feature1 master remotes/feature1
此時你的遙控器仍然是后備箱。 您需要將本地分支指向新的遠程分支。 您可以通過從遠程分支重新定位本地分支來實現此目的: $ git rebase remotes/feature1
現在您的本地分支引用了您的遠程分支,您可以將更改提交到它。 首先進行干運行,以確保您的更改將進入遠程分支: $ git svn dcommit --dry-run Commiting to http://svn-repo/my_app/branches/feature1
現在您可以將更改提交到遠程分支$ git svn dcommit
大多數操作方法會告訴您先分支subversion,然后創建一個跟蹤遠程分支的本地分支。 但我經常不提前決定我的本地分支機構是否應該跟蹤遠程分支。 通常我在本地分支,並且無需推送到遠程分支進行更改。 如果我后來決定將我的本地分支提交到遠程分支,我執行上述步驟。
我只是想指出,你不應該從你已經在不同的git分支中擁有的東西重新綁定到你最近創建的分支。 然后git svn dcommit將推送到主干似乎。 至少這對我來說是一個問題。
相反,如果你想將舊的git分支中的更改提取到這個新的svn分支上,請使用例如cherry-pick。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.