【问题标题】:Visual Studio 2013 no longer tracking changes using Git with Visual Studio OnlineVisual Studio 2013 不再使用 Git 和 Visual Studio Online 跟踪更改
【发布时间】:2017-10-21 16:23:04
【问题描述】:

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

在调查我无法提交的原因后,我注意到以下行为。我打开一个文件,进行更改,红色复选标记出现在文件名旁边,该文件出现在 Included Changes 下。当我保存文件时,红色复选标记消失,文件从包含的更改中消失。由于 Git 没有跟踪任何更改,因此无需向 Visual Studio Online 提交任何内容。我还注意到团队资源管理器 - 管理连接 - 本地 Git 存储库部分缺少项目的 Git 存储库 (/Portal)。

然后我使用 Visual Studio 2015 Ultimate Update 3 打开了另一个解决方案,我注意到我在管理连接下的 Git 存储库 (/Portal)。然后我能够执行 Git Status 并发现以下问题。见下图。

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

在这个阶段,我不确定问题是损坏的文件还是更新 5,它是几个月前下载的,但似乎是在 19 日或 20 日安装的。

更新 1:

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

更新 2:

根据 code_fodder 评论,我继续测试使用新的 repo (/Portal 2) 进行代码更改。它按预期工作。我对文件进行了更改,保存文件后仍然显示红色检查。我还运行了 Git Status,没有报告任何问题。

更新 3:

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

Git UI 中也缺少 Share 分支。

非常感谢任何帮助。

【问题讨论】:

  • 你试过运行git fsck吗?
  • 我刚刚运行它。请参阅更新 1。谢谢!
  • 我总是觉得 Visual Studio 集成有点可疑。你可以在命令行上重新克隆它吗? git clone <url-to-clone>,然后试试 git status...
  • 我添加了恢复repo的答案,你可以试试。
  • 这是本地问题。它可以在您最近提交的顶部恢复损坏的提交。例如,在尝试提交对提交 B 的更改时,本地 repo 损坏之前的最后一次提交是 A。之后,即使您的远程仓库也有新的更改提交C(目前是最新提交),该操作旨在在最新提交C 之后将更改恢复为提交B'。提交历史将如下所示:..---A---C---B'。是的,命令应该由 git 命令行执行(例如 cmd、git bash 等)。

标签: git visual-studio-2013 azure-devops


【解决方案1】:

如果您在对象损坏后没有更改任何文件,您可以恢复本地 repo (/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 分支。为了使事情更容易,您可以将本地master 重命名为share 分支git branch -m share。要检查远程master 分支的历史记录,您可以使用git checkout master

并且恢复提交就在您最新提交的顶部(远程仓库没有问题)。如下图所示:

假设提交 A 是在尝试以提交 B 提交更改时本地存储库损坏之前的最后一次提交。 在那之后,即使你的远程仓库提交C 有新的变化。远程仓库的提交历史如下:

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

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

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

【讨论】:

  • 这是解决“损坏” git repo +1 的聪明方法:)
猜你喜欢
  • 1970-01-01
  • 2014-11-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-10-02
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多