Visual Studio 2013不再使用Git和Visual Studio Online跟踪更改

Visual Studio 2013 no longer tracking changes using Git with Visual Studio Online

我正在使用Visual Studio Premium 2013更新5管理由多个项目组成的解决方案。我最后一次成功的在线承诺是10月18日晚上。我的电脑在19日早上重新启动,安装了大量的微软更新。我在19号做了一些小的发展工作。在提交更改时,我注意到在解决方案资源管理器中右键单击解决方案时,提交选项不可用。

在调查我为什么不能承诺时,我注意到以下行为。我打开一个文件,进行更改,文件名旁边会出现红色的复选框,文件显示在"包含的更改"下。当我保存文件时,红色的检查将消失,文件将从包含的更改中消失。由于Git没有跟踪任何更改,因此没有任何内容可以提交到Visual Studio Online。我还注意到团队资源管理器-管理连接-本地Git存储库部分缺少该项目的Git repo(/portal)。

然后,我使用Visual Studio 2015 Ultimate Update 3打开了另一个解决方案,注意到我的Git repo(/portal)位于"管理连接"下。然后我可以做一个git状态并发现了以下问题。见下图。

Command Prompt

由于我的Git repo(/portal)丢失,我使用Visual Studio 2013再次克隆了该解决方案。Visual Studio创建了一个新的git repo(/portal 2),现在它也显示了我的原始repo(/portal)。所包含的更改中仍缺少我最近的更改,因此它仍然无法正常工作。

在这个阶段,我不确定损坏的文件是否是问题所在,或者更新5(几个月前下载过,但似乎安装在19或20上)是否是问题所在。

更新1:

要求运行git fsck。这是结果。

氧化镁

更新2:

基于代码提要注释,我使用新的repo(/portal 2)进行了代码更改测试。它按预期工作。我对一个文件进行了更改,在保存该文件后,红色的复选框仍然显示。我还运行了git状态,没有报告任何问题。

更新3:

最后一条语句(git push-u origin share)产生以下错误。

氧化镁

Git用户界面中也缺少共享分支。

氧化镁

任何帮助都非常感谢。


如果在对象损坏后没有更改任何文件,则可以恢复本地repo(/portal)。具体步骤如下:

1
2
3
4
5
6
7
8
#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

恢复提交就在最新提交的基础上(远程回购没有问题)。如下图所示:

假设commit A是本地repo在尝试将更改作为commit B提交时损坏之前的最后一次提交。之后,即使您的远程回购承诺发生了新的变化,C。远程回购的提交历史记录如下:

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

执行上述命令后,恢复的commit B'将位于最新commit C的顶部。所以提交历史将是:

1
...---A---C---B'   share