2011-08-22 182 views
0

我一直在研究包含大約40或50個項目的Visual Studio解決方案。從頭開始在混帳?

我已經爲.sln文件添加了約10個項目,但與此同時其他人還在.sln文件中添加了一個項目。

如此有效地有一個文件 - V1,這兩個人獨立工作創建兩個單獨的V2。

我在找合併變化的噩夢。我正在使用的機器上安裝了BeyondCompare,它向我展示了三列合併。我無法弄清楚,所以我決定用git認爲遠程版本覆蓋我的本地文件。 但後來我又重新加入新項目的問題。

所以。在我進行第90次拉動+重做/提交之前,有沒有簡單的方法來解決這個問題? 比如,用遠程端的內容覆蓋當前所有的本地副本。然後重新添加我新添加的項目。然後提交。構建+測試。然後推。也許?

*編輯:FWIW,機器上還安裝了龜git,現在所有東西都顯示爲綠色滴答聲......所以這很好嗎?

+4

我建議學習如何處理BeyondCompare的3路合併將花費時間。 –

回答

1

如果您要求Git /其他工具知道在遠程sln文件中添加了項目,請添加它們,然後添加我添加的項目 - 不應該是您的方法。

只需修復合併衝突,即在遠程添加的所有項目以及您添加的項目都存在。

0

我處於「相同但不同」的情況。我將問題分解成兩部分。一個是簡單地捕捉我可以寫下的歷史記錄,並將其寫入一系列的快速啓動/提交。我可以確定一些不同的子項目和階段,因此在捕獲階段每個都有自己的回購。然後我可以graft將它們放在一起,並使用git filter-branch將它們全部帶入歷史。

對於目前的工作,我都開始從一個合適的「現在」點的新混帳回購協議,也既定合併技術繼續,轉儲到git倉庫直到我們完全可以合併這兩個過程一起。一些民衆需要一些令人信服的(自我)管理意味着我們不會放棄目前的做法,直到新的做法出現。

需要一段時間才能'得到'git哲學,並放棄舊的根深蒂固,但錯誤的方法。

1

首先,讓我們回到已知的狀態。做一個git reflog,然後在嘗試完成所有這些拉動和重新綁定之前找到一個提交。執行git checkout -b my-feature <commit-id>來創建一個名爲my-feature的分支,該分支指向該提交。驗證它是否按預期工作,而不需要從服務器進行所有最近的更改。

現在,通過執行git branch -f master origin/master使您的master分支與服務器上的內容匹配。

現在到了困難的部分。您必須解決您更改的內容與服務器上更改的內容之間的合併衝突。這是在一個團隊中工作的正常部分,你應該有條不紊地學習如何去做,而不是去掉它。 This是一個很好的資源。除了比較是一個很好的工具,以幫助解決3路合併,你應該學會使用它。

有時候,如果你有這是由一個工具生成的,而不是手寫的文件,它更容易使用的工具來進行更改,只需刪除你的本地修改和添加他們回來以後。如果你真的不明白的SLN文件的語法,這可能是你的情況。

要改變只是SLN文件匹配什麼在服務器上,這樣做:

git checkout master -- filename.sln 
git commit -am "Reset solution file to match origin" 

添加您的項目,併爲恢復正常提交該文件。現在,您想要將這些更改傳送到主分支上。做:

​​