你會遇到的一個問題是git svn rebase
實際上會重寫git倉庫的提交歷史記錄。這將與任何人從該回購協議中產生衝突。最好的解決方案是每個人都可以自己到git svn
svn倉庫。
如果你想建立一個遠程回購所以你可以共享分支,那麼每個人將只需要知道,如果遠程的Git分支復位至SVN,他們將不得不強制應用新的修訂歷史記錄他們的地方git回購。
其他人可以通過使用git pull --force
強制他們的本地回購配對遙控器。雖然被警告,但是因爲這會使修改點之後的任何提交失效。例如,假設我們有以下提交結構:
D----E topic
/
A----B----C----F master
然後我們使用git pull --force
更新我們的本地倉庫,然後改變提交的開始B
的SHA1。我們的新的結構將類似於如下:
D----E topic
A----G----H----I master
注意如何提交D
和E
現在浮在奇蹟的土地?這是因爲分支點現在不再匹配B
,而現在是G
。
要解決此問題,您需要確保您的本地分支點來自不會因運行git svn rebase
而被更改的提交。在拉動遙控器之後,您可以將您的本地分支git rebase
更新到更新遠程分支。
假設我們犯了一個錯誤,即從提交點創建一個分支,導致上述的浮動仙境。那麼,在你發起一個git pull --force
之前,你必須揮動混亂的魔杖。像這樣:
糟糕。 B
將在pull
中被覆蓋。
D----E topic
/
A----B----C----F master
好了,那麼我們只需要git rebase A topic
上承諾,將不會改變我們的變化。
D'---E' topic
/
A----B----C----F master
然後,一旦變化已經來了,我們可以git rebase G topic
,讓我們變回我們知道他們去。
D'---E' topic
/
A----G----H----I master
希望這解釋了嘗試運行中央訪問git回購一邊svn回購的痛苦。
謝謝。如何將「新修訂歷史」應用於本地回購? – Rocky
'git pull --force'將強制本地回購接受遠程更改。 **被警告**:在重寫點之後存在的任何本地提交將無效。如果這沒有意義,那麼我會用更深入的解釋來編輯我的答案。 –
「無效」是什麼意思?失去改變? – Rocky