簡體   English   中英

Git-svn:創建並推送一個新的分支/標簽?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM