2017-10-21 195 views
0

我正在使用Visual Studio Premium 2013 Update 5來管理由多個項目組成的解決方案。我上次成功提交到Visual Studio Online是在10月18日晚上。我的電腦在19日早上重新啓動並安裝了一堆微軟更新。我在19日做了一些小的開發工作。當我去提交我的更改時,我注意到當我在解決方案資源管理器中右鍵單擊解決方案時,Commit選項不可用。Visual Studio 2013不再跟蹤使用Git和Visual Studio Online的更改

在調查爲什麼我不能提交時,我注意到以下行爲。我打開一個文件,進行更改,紅色檢查出現在文件名旁邊,文件出現在「包含的更改」下。保存文件時,紅色檢查消失,文件從「包含的更改」中消失。由於Git沒有跟蹤任何更改,因此Visual Studio Online沒有任何提交。我還注意到,團隊資源管理器 - 管理連接 - 本地Git存儲庫部分缺少項目的Git repo(/ Portal)。

然後,我使用Visual Studio 2015 Ultimate Update 3打開了另一個解決方案,並在管理連接下注意到了我的Git repo(/ Portal)。然後,我可以做一個Git狀態,並發現以下問題。見下圖。

Command Prompt

由於我的Git回購(/門戶)失蹤了,我繼續一個克隆再次解決方案使用Visual Studio 2013年的Visual Studio中創建一個新的Git回購(/傳送門2),它現在顯示我的原始回購(/門戶)以及。包含的更改仍然缺少我最近的更改,所以它仍然無法正常工作。

在這個階段,我不確定損壞的文件是否是問題,或者更新5是幾個月前下載的,但似乎已在第19或第20次安裝。

UPDATE 1:

被要求運行git fsck。結果如下。

Command Prompt showing git fsck results

更新2:基於code_fodder評論

,我繼續做測試使用新的回購協議(/傳送門2)更改代碼。它按預期工作。我對文件進行了更改,保存文件後仍然顯示紅色的檢查。我也運行Git Status,並且沒有報告的問題。

更新3:

最後一條語句(混帳推-u起源股)產生以下錯誤。

Command Prompt showing git push -u origin share

股份分支,從Git的UI缺少的爲好。

Git UI image showing only the Master branch

任何幫助深表感謝。

+0

你試過'git fsck'嗎? –

+0

我只是跑它。請參閱更新1.謝謝! –

+0

我總是發現visual studio整合有點嫌疑。你可以在命令行重新克隆它嗎? 'git clone ',然後嘗試git status ... –

回答

1

如果在對象損壞後沒有更改任何文件,則可以恢復本地回購(/ Portal)。如下具體步驟:

#In the directory for Portal 
rm -rf .git 
git init 
git remote add origin <repo URL> -f 
git reset origin/share 
git add . 
git commit -m 'recovery the last commit before the repo corrupt' 
git push -u origin share 

現在最後時間的變化已經恢復,並推到遠程分支share

注意:本地master分支實際上跟蹤origin/share分支。爲了使事情更容易,您可以通過git branch -m share將本地master重命名爲share分行。要檢查您的遠程master分支的歷史記錄,可以使用git checkout master

恢復提交只是在您最新的提交的頂部(遠程回購沒有問題)。如下圖所示:

假設提交A是在嘗試將更改提交爲提交B時本地回購損壞前的最後一次提交。 之後,即使您的遠程回購承諾C有新的更改。對如下遠程回購的提交歷史:

...---A---C share 

在執行上面的命令後,將收取承諾B'將在最新的頂級提交C。所以提交的歷史將是:

...---A---C---B' share 
+0

這是一種巧妙解決「破碎」git倉庫+1的方法:) –