想象一下以下场景:
Manager创建了一个团队项目,并决定使用(最新的)git作为项目的VCS。开发人员团队将使用(最新)VS2015(企业)IDE。 Manager创建了一个名为“master”的新(原始)分支,然后提交了&将2个文件推送到该分支。
项目文件层次结构:
Project (Root) Folder
| notes.txt
\ readme.md
由“Jym”和“Bennie”组成的开发团队已经取消了origin / master分支(他们都在本地/主分支上工作)。 Jym承诺和将第一个更改推送到“notes.txt”文件(直接转到master分支)。 Bennie创建了一个名为“todos.txt”的新文件,并且还对“notes.txt”文件进行了一些更改。 现在,当Bennie尝试同步/拉出更改(由Jym早期做出)时,同步窗口中会显示以下消息:
无法拉动,因为存在未提交的更改。在再次拉动之前提交或撤消更改。有关详细信息,请参阅“输出”窗口。
为了让团队变得更糟糕,Bennie也正在经历same issue that was opened in late December last year。这意味着Bennie实际上无法运行任何git命令(但是,所有功能,但“撤消”似乎与Visual Studio Git / TFS提供程序一起使用 - 他发现这很奇怪)。
也正因为如此,这个问题不是(可能)重复another question。
如何解决Bennie遇到的问题(来自上述场景)(当然只使用Visual Studio)?
如果我可以提供更多详细信息,请发表评论。
编辑1 (suggested answer的solving "null" device输出):
第一步的结果:这个答案中不是一个错字,不应该“nul”为“nil”吗?
第二步(设备管理器)的结果:
随着视图 - >选中“显示隐藏的设备”选项,没有任何设备名称中带有“警告”图标(未知/无法识别的设备)或“空”的设备。
此外,显然甚至没有列出“非即插即用驱动程序”类型(当然,当选择View - >“按类型设备”时)。
第三步:%SystemRoot%\system32\drivers\null.sys
文件的结果已存在并已从磁盘中删除(从Windows 10复制并粘贴到null.sys文件中)。
更多细节:一旦右键单击任何这些sys文件,上下文菜单中没有“Install”或“Uninstall”选项,默认操作似乎是“Open with ...”(以粗体显示)。
第四步的结果:尝试合并null.reg失败。重新分配HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\Root
注册表项的所有者,也设置了适当的权限
更新注册表密钥权限后,null.reg文件已成功合并到注册表中
重新启动计算机
等待最终答案...... 错误仍然显示!
编辑2 (测试PATH环境变量):
仍然会出现相同的错误(即使以管理员身份打开git-cmd.exe或git-bash.exe)。
编辑3 (电源选项,不使用“允许计算机进入离开模式”设置):
Reference thread。
编辑4 :
Bennie将他的机器从Windows 8.1升级到10后,问题已经解决。我们现在可以简单地断定操作系统已损坏。
答案 0 :(得分:12)
每当一个GUI(这里是一个带有Git集成的VS)走出标称路径(这里不能立即执行git push)时,请恢复到git命令行界面。
在你的情况下,伯尼需要一个git pull --rebase
。
打开一个git bash,并做(如伯尼)
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
注意,git pull --rebase
可能即将推出Visual Studio(关注@gitforvs
):
但是没有官方的话。
关于" Couldn't open /dev/null (or dup failed)
",看看" Getting errors when using GitHub for Windows"可以提供帮助(问题null device)。
如果错误仍然存在,例如在git-for-windows/git issue 583中,重新安装Windows仍然是摆脱这种困境的最可靠方法。
如编辑4中的OP OmegaExtern所述,从win8升级到win10足以恢复设备并解决问题。