2011-03-15 30 views
1

我下面這個模式在我的代碼,以檢查在功能分支Subversion和混帳的svn:的git - svn的:保持一個合併後提交的svn變基

git checkout master 
git svn rebase 
git checkout feature-branch 
git rebase master 
git checkout master 
git merge --no-ff feature-branch 
git commit --amend 
git svn dcommit

(主是我的遠程顛覆跟蹤分支)

這會在master上創建一個合併提交(無論我在功能分支上做了多少個git提交),我可以在Subversion中進行檢查。

但是,在我將功能分支合併到主設備後,有人檢查代碼到Subversion中,當我執行命令git svn rebase時,應用了新的更改,並且將每個單獨的功能分支提交應用於頂層。在這一點上,我不再有一個合併提交,但我在master中的功能分支上執行的每個提交。

處理這個問題的最佳方法是什麼?

+0

只是供參考,沒有規則,你只有在執行dcommit時才推送一次提交。你可以一次做幾個(按照你喜歡的方式清理歷史記錄,就像斯派克建議的那樣)。 – 2011-03-19 02:40:55

回答

1

這是我如何做到這一點:

git checkout feature-branch 
git rebase -i HEAD~10 # squash commits in my editor 
git svn rebase # make sure I have the latest code 
git svn dcommit 
git checkout master 
git svn rebase # now the feature-branch squashed commit is visible on master 
1

您可以通過使用--squash選項做你想做什麼:

# rebase master and then feature-branch as above 
git merge --squash feature-branch 
git commit -m "Merge from feature-branch" 
git svn dcommit 

這避免了對功能進行分支的父母你的新的提交。這聽起來像多個父母混淆了git-svn。