我有一個git svn回購。我在這裏有多個發佈分支。我正在準備一個新版本,並且作爲其中的一部分,我想我會在前一版本中執行「git rebase」,以撤銷未合併的任何更改。「git rebase <branch>」上git svn回購更改遠程跟蹤目的地?
所以我建立了我的枝葉......
git branch new_release remotes/svn-branches/new_release
git branch old_release remotes/svn-branches/old_release
然後我做底墊...
git checkout new_release
git rebase old_release
# watch it pull a bunch of commits
git svn dcommit
Committing to https://svn.mysvn.net/repo/releases/old_release ...
,我做了 「SVN dcommit」 我幾乎crapped我的褲子後。這是在Subversion中哄我的舊版本分支!
爲什麼遠程追蹤分支因變形而改變?
我該如何解決自己陷入的局面?
編輯:好的,用於獲取自己離開我相信我能做到以下幾點:http://svnbook.red-bean.com/en/1.5/svn.branchmerge.basicmerging.html#svn.branchmerge.basicmerging.undo
,因爲只有那名對被拉到old_release的new_release分支提交了一把,我可以恢復它們單獨在SVN回購上。儘管如此,我仍然對這裏發生的事情感到困惑。
EDITx2:是的,這裏有一些步驟來驗證。
- 設置兩個的Git分支遠程跟蹤,SVN分支的分支
- 退房一個
- 運行
git svn info
並觀察URL指向正確的位置在SVN - 運行
git rebase <other_branch>
- 運行
git svn info
再次觀察URL改爲指向SVN中的其他分支位置
subgit看起來確實很漂亮,可惜這是不可能的,我可以我們的SVN服務器上安裝它,有太多人依靠它而將是可以理解的厭惡安裝,當事情在很大程度上是「加工」。我應該怎麼做我在git-svn中要做的事情? – ashgromnies
你可以在你的機器上安裝子目錄並指定--svn-url,即它具有與git-svn幾乎相同的要求。 與git-svn ...我認爲你可以1)簽出new_release 2)確保HEAD已經在git-svn-id(即new_release的URL)提交正確的URL的消息3)通過git-svn-id:簽名(例如在提交之前使用「git cherry-pick -n」命令和編輯消息)或者通過「git filter-branch」命令重新綁定和移除它們。說實話,我不確定刪除git-svn-id簽名是否有必要,但我最好刪除它們。 –