2016-09-07 52 views
-1

我們使用TFS和GIT進行源代碼控制。Visual Studio 2013 Ultimate中的GIT中的二進制文件合併

我想拉最新版本,但我有問題與dll文件不同步。

我做了以下工作;

試圖從團隊資源管理器菜單中提取最新的提交。然後我得到這個信息;

中出現錯誤:33名提交的更改將被合併

被覆蓋所以我然後跑去另一個承諾,其中包括所有排除的文件。這包括DLLs等我通過去團隊瀏覽器 - >更改

然後添加了33個未跟蹤的文件,並在本地提交。

接下來,我單擊同步,然後從傳入的提交菜單中拉出。

然後我得到消息;

拉完成衝突。解決衝突並提交結果。

我點擊'解決衝突'鏈接,它給出了77個文件(dlls csproj和pdb文件)的列表。看下面的截圖;

team explorer on merge

然而,當我點擊保存本地或遠程保留鏈接沒有任何反應。

如果我選擇合併按鈕,我得到的消息

git popup 2

有人能指點我一下,怎麼解決這個問題?

回答

2

Git倉庫不要好好處理二進制文件。 Git針對文本文件進行了優化,可以有效地進行差異化和壓縮。二進制文件不能被區分和壓縮,所以它們會導致版本庫膨脹 - 每次提交新版本時,Git都必須存儲整個二進制文件。這會導致回購變得龐大且克隆緩慢,並且在切換分支時會產生巨大的負面影響。

處理程序集引用的正確方法是使用程序包管理器來允許在構建時恢復二進制文件,而不是提交給源代碼管理。這也爲您提供了有關管理組件版本的更多靈活性。對於其他類型的二進制文件(例如圖像),Git LFS允許您爲二進制文件使用有效的Blob存儲,同時仍然保持存儲庫精簡併僅包含容易區分/可壓縮的文本。 TFS 2015 Update 2支持Git LFS,但早期版本不支持。

這就是說,你肯定應該成立了.gitignore文件(如果沒有的話),以確保您的binobj文件夾不在源控制;他們絕對不應該受到源頭控制;這個不成立。如果你有一堆舊的提交污染了你的歷史,你可以用BFG等工具刪除它們,但要注意它會重寫你的Git repo的歷史記錄,這可能會給其他團隊成員帶來問題。這是你應該做的事情,但應該與團隊其他人仔細協調,以確保沒有人遇到任何問題。

+0

丹尼爾,非常感謝你這樣做,我通過恢復到之前的提交併重新提交代碼來解決問題。 –

1

不要檢查dll到源代碼管理。

+0

好的,我該如何解決這個問題呢?我已經添加了娃娃到got.ignore –

+0

https://docs.nuget.org/ – thekbb

+0

那麼nuget與這個有什麼關係? –

相關問題