2012-09-11 57 views
1

在我的辦公室我們遷移到Git的,而且目前我使用Git,SVN做以下工作流程:混帳拉錯誤優先考慮老款

git svn rebase 
git checkout -B FEATURE_NUMBER 

做的工作,而本地犯

git checkout master 
git svn rebase 
git merge --squash FEATURE_NUMBER 

解決任何衝突,運行測試等

git commit -a -m "Actual Commit Message for everyone else" 
git svn dcommit 

這工作正常,但我也辦事處之間進行傳播,使用不同的電腦,所以我一直在使用的私人GitHub庫圍繞把我的樹枝,如果我還沒說完。

造成這種情況的工作流程是:

git svn rebase 
git checkout -B FEATURE_NUMBER 

做的工作,而犯本地

現在我想移動辦公室

混帳推起源FEATURE_NUMBER

去新的辦公室

git svn rebase 
git checkout -B FEATURE_NUMBER 
git pull origin FEATURE_NUMBER 

但是,問題在於發生了一堆衝突。這似乎認爲,在Github上,我徹底解開了自從我在總部重新啓動以來我的團隊所做的所有改變。基本上,它將舊的提交優先於GitHub(即從rebase之前)提交給SVN服務器的新提交。

有一些方法我可以把它很好地融合?

回答

1

你還會做git svn rebase而在功能分支?請注意,git svn rebase會進行真正的rebase,即與另一個父級創建新的提交。另請注意,git pull會自動創建合併。這些衝突是在樹中的兩個不同位置嘗試合併相同的更改(在移動辦公室之前在FEATURE_NUMBER之前)的結果。

爲了避免這個問題,你能避免一拉,而是要求git fetch。它只是獲取新提交到origin/FEATURE_NUMBER,這樣你就可以與他們做任何你想要的,如:

# fetch new work from GitHub into origin/FEATURE_BRANCH 
git fetch origin 
# reset FEATURE_NUMBER to the latest GitHub 
git checkout -B FEATURE_NUMBER origin/FEATURE_NUMBER 
# reparent those commits on top of the latest svn 
git svn rebase 
+0

混帳SVN變基失敗,「無法確定從工作樹歷史上遊SVN信息」。我在重新綁定之後嘗試了git merge master,但是它將3個方法與基礎合併爲一個空白文件,所以它認爲整個文件被更改,並且它的全部衝突。 使用中的抓取/支的方法,我可以去掌握,做一個合併--squash,然後用無法比擬的改變哪個文件是將其合併ok了基礎,但還是希望它是自動 – RodH257

+0

別的分支我試過,它說,一旦我做了git svn rebase – RodH257

+0

,我就不明白爲什麼'git svn rebase'會失敗;當我仍然使用git-svn時,你可以從任何分支重新綁定。在另一個分支上,你確定衝突不是真實的,即有人沒有做出你想要改變的同樣的改變?也許你的git-svn安裝被破壞了,使得它無法正確地確定非svn提交的開始位置。 – user4815162342