基本上,當我想在一個git add --patch <file>
操作導致的同一個文件中提交兩個單獨的更改時,git svn rebase稍後會引發1-2個衝突在使用git add
進行第二次更改時更改。git-svn問題與git add --patch產生衝突
所以我基本上是做這個(我是主分支,並已獲取的svn庫):
git checkout -b feature
... make two unrelated changes to file test.txt...
git add --patch test.txt
... add first change but ignore second one
git commit -m "change1"
git stash
git checkout master
git merge feature
git svn rebase
git svn dcommit
git checkout feature
git stash apply
現在這裏有兩種方法可以做到這一點,首先是工作的一個:
git add --patch test.txt
... select everything (which is the second change in this case)
git commit -m "change 2"
git checkout master
git merge feature
git svn rebase
git svn dcommit
這裏是一個不工作:
git add test.txt #notice there's no --patch
git commit -m "change 2"
git checkout master
git merge feature
git svn rebase #yields a conflict
那麼爲什麼使用時對於第二次更改,我可以承諾svn存儲庫沒有問題,但是當第二次更改使用git add
時,它會導致衝突?我對git很陌生,所以這可能是一個愚蠢的問題,但正如我所看到的,兩個命令集應該完全一樣。
http://andy.delcambre.com/2008/03/04/git-svn-workflow.html我一直在關注這個教程(我是很新,GIT),他說,這是不建議在主分支上工作。我嘗試了它的主人(不完全是你的方式,因爲我想成爲兩個不同的rebase/dcommit svn),它沒有問題。你介意解釋svn和git合併到我的區別,這將不勝感激? – Zenon 2010-09-05 11:53:23
@Zenon:我不明白你的意思»我想成爲兩個不同的rebase/dcommit svn«?你能詳細說明嗎? – knittl 2010-09-05 12:32:17
哦,我的意思是我第一次改變 - > svn rebase&svn dcommit,然後將第二次換回,然後再次svn rebase&svn dcommit。我基本上把所有事情做成了一種概念證明。例如,我正在git的分支上工作,添加一些新的東西,只是破解一些無關的變化。稍後,我想檢查一下我添加到master並隨後添加到svn中的一些內容,然後繼續處理git分支中的其他更改,並在稍後完成時提交它們。這樣,編碼時就不必擔心源控制。 – Zenon 2010-09-05 12:41:10