Visual Studio 2015 Git错误信息“无法拉取/切换因为有未提交的更改”

67
我在从 origin 进行拉取时遇到了困难。我一直收到以下提示:
“无法拉取,因为存在未提交的更改。在再次拉取之前,请提交或撤销更改。有关详细信息,请参见“输出”窗口。”
这也适用于切换分支。我会得到类似的消息,但并非总是发生。
我正在使用 Visual Studio 2015 Update 1 和 Visual Studio Team Services Git。在我的计算机上,我有一个本地的 master 分支和开发分支。每次我切换到 master 然后进行拉取时,我都会收到错误消息。我已经采取了存储和删除存储(命令行),有时我使用 TortoiseGit 进行拉取,它可以正常工作。
奇怪的是,即使我尝试使用 TortoiseGit 恢复(对于未提交的文件),它也显示成功恢复了(我已经尝试了 Visual Studio 撤消,但没有任何反应)。再次尝试拉取,仍然存在同样的问题。未提交的文件仍将存在,并且有时当我执行 git status 时,它会显示没有要提交的内容。

请注意:即使从分支切换到master,这种情况也可能发生。在这种情况下,不可能有未提交的更改,因为我一开始就无法进行切换。

我对Git仍然很陌生,但我想知道是否有更好的解决方法,因为我希望使用一个环境而不是在每个任务之间切换不同的环境;对我来说,只需在Visual Studio中完成所有操作更容易。我已经阅读了:

TFS/GIT in VS Cannot switch to master because there are uncommitted changes

更新

看起来这个问题与行尾有关。

通过执行git diff -R,您可以看到添加了一个行尾符号“^M”,并且它是不同的。删除gitattributes中的* text = auto(然后检查更改),然后再次放回它,以便gitattributes不会发出需要提交的自身更改的信号似乎有所帮助,不会有任何更改。


我重新启动了几次Visual Studio,然后我才能够拉取更改,进入合并冲突屏幕。 - Manish Jain
13个回答

0

以下是我遵循的步骤:

  1. 在输出窗口中查看未提交文件的路径
  2. 导航到该路径并从文件夹中删除该文件
  3. 在Visual Studio的团队资源管理器中撤消更改以重新添加它

0
Visual Studio 中打开 输出窗口,并将 显示来自 切换为 源代码控制 - gitgit 将告诉您有关阻止其拉取的内容。其中最常见的原因之一当然可以是这样的:
The pull would overwrite your local changes to the following 44 files:
    <Here you can probably see a list of 44 files>

这意味着有44个文件被添加到了远程仓库,但它们不是本地仓库的一部分。打开Git Bash并运行以下命令:

git add *

这可能会解决问题,或者最终导致像这样的错误:

$ git add *
The following paths are ignored by one of your .gitignore files:
TestResults
Use -f if you really want to add them.

如果您确定要将它们添加到本地代码库中,只需使用 git add * -f 命令将它们添加,或者从远程仓库中移除不应该添加的文件。
希望这能对您有所帮助。

0
对我来说,问题中的“更新”就是答案。我在存储库的根目录下添加了一个.gitattributes文件,并仅包含以下内容,以便仅在文件为文本时规范化行结尾。
*.txt text
*.html text
*.css text
*.js text
# These files are text and should be normalized (Convert crlf => lf)
*.gitattributes text
.gitignore text
*.md texttesting 

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接