2010-02-17 132 views
6

我有一個SVN分支的問題。 我用git checkout -t -b stable svn/stable進行了結算。 然後我做了一個與git rebase master合併。 之後,我試着用git svn dcommitGit:如何在rebase之後提交到​​SVN分支?

提交合並變爲遠程分支但是現在看來,這混帳推變化到主幹而不是分支:(

而且git status告訴我:

# On branch stable 
# Your branch and 'svn/stable' have diverged, 
# and have 218 and 52 different commit(s) each, respectively. 
# 
# Untracked files: 
# (use "git add <file>..." to include in what will be committed) 
... 

是否有人知道我做錯了什麼,以及如何做是正確的?

回答

2

我最近打了同樣的錯誤。問題是,當你變基到高手,第一硬RESE ts當前分支掌握,然後應用合併提交。但是,您的主分支與svn/trunk相關聯,因此新重設的分支也與其關聯。所以git-svndcommit認爲提交時,提交被「插入」到svn/trunk

解決方案是使用git merge --no-ff而不是git rebase。或者使用Subversion本身的合併工具。

+0

嗯,謝謝,我知道要使用git合併的可能性,但隨後我就失去其它信息的修訂歷史和很多東西。 它也可以是一個解決方案,與主分支而不是主分支本身重新分配? – ownking 2010-02-17 18:14:46

+0

@tigerseye,我懷疑這種分支技巧會幫助你。因爲與'svn/trunk'關聯的提交無論如何都會進入你的分支。 要保持修訂歷史,您可以與Subversion合併。否則,你只會污染顛覆日誌,其他開發人員不會對此感到滿意。 – 2010-02-17 18:39:01

+0

我是git的新手,我真的看到了優勢,但是在這個充滿挑戰的步驟中,對於日常挑戰來說,感覺有時候太難了。 在git切換器世界中,將開發git分支合併到穩定的SVN分支中是不是一種常見的情況?爲什麼存在一種常見的方法來執行此操作? – ownking 2010-02-17 21:20:16

0

現在的作品,我沒有這樣說:

git checkout master 
    git svn rebase 
    git checkout --track -b svn_stable svn/stable 
    git merge --squash master 
    git commit -m "Bring stable up-to-date with trunk" 
    git svn dcommit --dry-run 
    git svn dcommit 

合併是不是與衝突處理底墊容易得多。

在這個嘗試中,我忘記使用--no-ff,這會強制每次合併提交,對不對?

感謝您的幫助:)