Visual Studio 2015 Git由于有未提交的更改,因此无法进行切换/切换

我很难从原产地拉起来。 我不断收到:

“因为有未提交的更改,所以无法提取。在再次提交之前提交或撤消更改。有关详细信息,请参见”输出“窗口。

这也适用于转换分支,我收到类似的消息,但这并不总是发生。

我正在使用Visual Studio 2015更新1和Visual Studio Team Services Git。 在我的机器上我有本地主分支和开发分支。 每当我切换到主,然后我做一个拉我得到的错误信息。 我所做的是做一个藏匿和存放(命令行),有时我用龟龟Git做拉和它的工作。 奇怪的是,即使我试图恢复(在未提交的文件)使用Tortoise git它表明它已成功恢复(我已经试过VS撤消,没有任何反应)。试图再次拉动同样的问题。未提交的文件将在那里,有时当我做一个git状态,它说什么都没有提交。

只需要注意,即使从分支机构切换到主机之后,也可能发生这种情况,在这种情况下,没有办法可以进行未提交的更改,因为我无法在第一时间进行切换。

我还是Git的新手,但想知道是否有更好的方法来解决这个问题,因为我想使用一个环境,而不是在不同的环境之间切换每个任务,这使我更容易从Visual Studio中做所有事情。 我已经阅读过:

VS中的TFS / GIT因为有未提交的更改,所以无法切换到主站

更新看起来像这个问题必须通过做一个git diff -R行结束 – 你可以看到一个行结束已经添加“^ M”,它是不同的。删除*文本=自动在gitattributes(然后检查更改)并重新放回来,这样gitattributes并不表示需要提交的gitattributes自身的变化似乎有所帮助,不会有任何变化。

对于我来说,我没有任何未提交的更改或任何未跟踪的文件,VS 2015仍然提出警告。

  1. closuresVS中的解决scheme,退出VS.
  2. 打开Git Bash (或者你最喜欢的Git UI)
  3. 导航到您的回购(或使用Git UI打开回购)
  4. git pull (或者在Git UI上执行)
  5. 合并发生(希望没有冲突,在我的情况下), vi打开(或默认的合并parsing工具)
  6. :wq然后在viENTER (或冷静地处理可选popup的合并工具),并希望这可以解决它,就像我一样。
  7. 开始VS 2015,打开项目

我通过指示closures和打开解决scheme和VS来一步一步地增加了安全性。 这可能过于谨慎,也许重新加载就足够了。 这个症状可能是VS Git集成部件的bug,也许将来会解决。

git statusinput到在该目录中打开的命令行中。 如果有红色和/或绿色的文本,你已经改变了一些东西,而不是添加和提交。 要么通过执行git checkout -- <file>恢复文件,要么添加并提交(通过执行git add --all然后git commit -m "commit message" )。 然后,您可以检查分支机构或其他任何你想要做的事情。

通过命令提示符转到项目的工作目录来尝试使用这些命令。

 git add -A git commit -m "your message" git fetch origin master git pull origin master git push origin master //To push to the git 

让我知道,如果有任何问题。

当文件/更改没有在本地提交时,通常会发生此问题,但它包含在拉动操作中。 例如,您直接从本地Git repo文件夹(Visual Studio之外)添加新文件“test.txt”。 这个文件可能被列在“未跟踪文件”选项中,所以当你提交更改时,这个文件没有被跟踪和提交。 然后另一个人也创build了一个“test.txt”,并以相同的path提交并推送它。 现在,当您执行拉动作时,拉动作中将包含“test.txt”文件,您将收到错误消息,指出有未提交的变化。 因此,您需要检查是否有未提交的文件/更改,并在提取之前提交它们。

以下是我所遵循的步骤

  1. 在输出窗口中引用未提交文件的path
  2. 导航到该path并从文件夹中删除该文件
  3. 从Visual Studio中的团队资源pipe理器撤消更改以再次添加它

我希望这个能帮上忙…

对我而言,问题中的“更新”就是答案。 我在存储库的根目录下添加了一个.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