2016-03-15 135 views
3

我們以前在我們團隊中使用CVS,我們正在嘗試遷移到git,但由於某種奇怪的原因,其中一位程序員通過手動更新分支而不是使用版本控制來處理大型項目。這導致了代碼中的許多人爲錯誤差異,我們不確定該從哪裏去。如何將非版本控制的分支導入到git中?

現在我們正在等待那個程序員在導入到git之前合併這些分支,但是這個過程太長了。 我們正在考慮分別導入所有分支,然後在git中合併它們。我們不確定如何使用非版本控制的分支來完成此操作。

什麼是最好的方式去做這件事?

+2

執行此操作的一種方法是從版本化的回購庫中創建新分支,然後將源代碼與非版本化分支的源代碼粘貼在一起。然後你會清理一切,提交,並且你將擁有一個版本分支。 –

+0

@TimBiegeleisen如果對很多文件進行了很多修改,該怎麼辦?有沒有辦法自動做到這一點? git合併能夠處理這樣的事情嗎? – juil

+1

你需要一些方法才能進入Git「系統」,我的第一個評論可能是一種方法來做到這一點。一旦你有一個實際的Git特性分支與'master'共享一個祖先,那麼問題就簡化爲一個簡單的'git merge'。 –

回答

2

以下是一種可以嘗試解決問題的方法。假設你開始你的master分支,首先創建一個新的特性分支將舉行程序員的項目的手動版本:

git checkout -b feature 

接下來,您可以複製的根目錄包含程序員的項目,並將其粘貼在上面您剛剛創建的feature分支的根目錄。我看到三種可能與每個文件發生:

  • 其中只有將被添加程序員
  • 共享文件將由程序員的版本
  • 被覆蓋的共享文件將在一個位置添加一個新的文件不同於它在feature分支中的位置

深吸一口氣,並從Git控制檯輸入git status。您可能會看到所有三種情況的證據,可能還包括目錄。注意你所看到的,因爲你將在最後一步處理這些文件。

下的所有文件添加到Git的指數,並承諾通過

git add path/to/file 
git commit -m 'programmer branch created' 

不要害怕使用通配符如果你加快東西,例如git add dir/*

現在你有一個真正的Git功能分支,代表了程序員所做的工作。對於最後一步,你可以嘗試通過合併thigs分支到master

git checkout master 
git merge feature 

將會有很多的衝突,但是如果你申請的一些見解,你應該能夠確定解決他們的計劃。

相關問題