无法提取,因为使用VS2015/Git存在未提交的更改
想象一下以下场景: 经理创建了一个团队项目,并决定使用(最新)git作为项目的VCS。开发团队将使用(最新)VS2015(企业)IDE。 Manager创建了一个名为“master”的新(源)分支,然后将2个文件提交并推送到该分支 项目文件层次结构:无法提取,因为使用VS2015/Git存在未提交的更改,git,visual-studio,visual-studio-2015,dev-null,Git,Visual Studio,Visual Studio 2015,Dev Null,想象一下以下场景: 经理创建了一个团队项目,并决定使用(最新)git作为项目的VCS。开发团队将使用(最新)VS2015(企业)IDE。 Manager创建了一个名为“master”的新(源)分支,然后将2个文件提交并推送到该分支 项目文件层次结构: Project (Root) Folder | notes.txt \ readme.md 由“Jym”和“Bennie”组成的开发团队已经撤出了origin/master branch(他们都在本地/master branc
Project (Root) Folder
| notes.txt
\ readme.md
由“Jym”和“Bennie”组成的开发团队已经撤出了origin/master branch(他们都在本地/master branch工作)。
Jym已经提交并推送了对“notes.txt”文件的第一个更改(直接提交给master branch)。
Bennie创建了一个名为“todos.txt”的新文件,并对“notes.txt”文件进行了一些更改。
现在,当Bennie尝试同步/拉取更改(Jym之前所做的更改)时,同步窗口中将显示以下消息:
无法提取,因为存在未提交的更改。在再次拉取之前提交或撤消更改。有关详细信息,请参见输出窗口
为了让球队的情况变得更糟,本尼也经历了同样的情况。这意味着Bennie实际上无法运行任何git命令(但是,除了“撤消”之外的所有功能似乎都可以与Visual Studio git/TFS提供程序配合使用,他发现这非常奇怪)。也正因为如此,这个问题不可能重复 如何解决Bennie遇到的问题(来自上面描述的场景)(当然只使用Visual Studio) 如果我能提供更多细节,请发表评论 编辑1(输出自for):
第一步的结果:答案中的“nul”不应该是“nil”吗 第二步(设备管理器)的结果: 选中查看->“显示隐藏设备”选项后,任何设备的名称中都没有带有小“警告”图标(未知/无法识别的设备)或“空”的设备。
此外,显然“非即插即用驱动程序”类型甚至没有列出(当然,当选择View->“Devices by type”时) 第三步的结果:
%SystemRoot%\system32\drivers\null.sys
文件已存在,并已从磁盘中删除(从Windows 10复制并粘贴到null.sys文件中)。更多详细信息:右键单击任何sys文件后,上下文菜单中没有“安装”或“卸载”选项,默认操作似乎是“打开…”(粗体) 第四步的结果:尝试合并失败。重新分配了
HKEY\U LOCAL\U MACHINE\SYSTEM\CurrentControlSet\Enum\Root
注册表项的所有者,并设置了相应的权限。更新注册表项权限后,文件已成功合并到注册表中。
重新启动计算机。
等待最后的答案错误仍在显示中
编辑2(测试路径环境变量):
仍然会发生相同的错误(即使以管理员身份打开git-cmd.exe或git-bash.exe) 编辑3(电源选项,不使用“允许计算机进入远离模式”设置):
.
编辑4:
在Bennie将他的机器从Windows8.1升级到10之后,这个问题就解决了。现在,我们可以简单地断定操作系统已损坏。每当GUI(此处为VS与Git集成)退出标称路径(此处不可能立即进行Git推送)时,请返回Git命令行界面 在您的情况下,Bernie需要一个a
git pull--rebase
打开git bash,然后(像Bernie那样)做
注意,git pull--rebase
可能很快就会为VisualStudio提供支持(如下所示):
不过还没有官方消息
关于“
无法打开/dev/null(或dup失败)
”,请查看“”是否有帮助(出现问题)
但是,如果错误仍然存在(如中),重新安装Windows仍然是摆脱这种困境的最可靠的方法
正如编辑4中提到的,从win8升级到win10足以恢复设备并解决问题。您能否提供有关Bennie是否已提交其(她的?)更改的更多详细信息?@Andreypsohin Bennie get“无法提取,因为存在未提交的更改。在再次拉取之前提交或撤消更改。有关详细信息,请参阅输出窗口。“因此,他在origin/master之后进行了一次本地更改,但无法使用git(或撤消功能-原因未知)。他尝试重新安装git,git for Windows(GitHub客户端),验证git目录是否在PATH环境变量中设置,等等。但git总是以此类/类似的错误消息作出响应:”致命:打开/dev/null或dup失败:没有这样的文件或目录“.他还试着用SourceTree,乌龟。。。什么都不起作用。我的意思是,如果更改确实未提交,并且通过
git status
被视为挂起的更改,Bennie可能会得到相同的错误。据我所知,这些更改是在尝试执行git pull
命令之前提交到master中的?@andreypesohin是的,当然还有未提交的更改。不,Bennie在本地所做的更改既不提交也不推送(他坚持自己的更改,与origin/master相比,延迟了1次提交)。VisualStudio现在也开始困扰他,比如如果他创建了一个新文件,它就不会被跟踪(添加到包含的更改中,如果他试图永久删除一个文件,就像他完全不同步一样,同样适用)。@Andreypsoshin升级是最新的合适选择;未重新安装(格式化/干净安装)。两者之间有区别;)这是行不通的,因为“这意味着Bennie实际上无法运行任何git命令”。再读一遍这个问题?@OmegaExtern我已经读过了,我相信Bernie可以在shell中运行git命令。只要解压缩Bernie想要的任何地方,Bennie就可以运行Windows8.1(x86/32位)。我给他发了32位便携式拉链Git,他
cd /path/to/repo
git status # make sure everything is committed
git pull --rebase
git status # you see notes.txt as being in conflict
# edit notes.txt and resolve the conflict by removing merge markers
git add .
git rebase --continue
git push