5

想象以下场景:

经理创建了一个团队项目,并决定使用(最新的)git 作为项目的 VCS。开发团队将使用(最新的)VS2015(企业)IDE。Manager 创建了一个名为“master”的新(原始)分支,然后将 2 个文件提交并推送到该分支。

项目文件层次结构:

  Project (Root) Folder
    | notes.txt
    \ readme.md

由“Jym”和“Bennie”组成的开发团队已经拉取了 origin/master 分支(并且他们都在本地/master 分支上工作)。Jym 已提交并推送第一个更改到“notes.txt”文件(直接到主分支)。Bennie 创建了一个名为“todos.txt”的新文件,并对“notes.txt”文件进行了一些更改。现在,当 Bennie 尝试同步/拉取更改(Jym 之前所做的)时,同步窗口中会显示以下消息:

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

为了让团队变得更糟,Bennie 也遇到了与去年 12 月底公开的完全相同的问题。这意味着 Bennie 实际上无法运行任何 git 命令(但是,除了“撤消”之外的所有功能似乎都可以与 Visual Studio Git/TFS 提供程序一起正常工作——他觉得这很奇怪)。
也正因为如此,这个问题不是(可能)与另一个问题重复。

如何解决 Bennie 遇到的问题(来自上述场景)(当然只使用 Visual Studio)?

如果我可以提供更多详细信息,请发表评论。

编辑 1 (解决“空”设备的建议答案的输出):第一步 的结果:那不是那个答案中的错字,“nul”不应该是“nil”吗?

看截图

第二步(设备管理器)的结果:选中“查看”->“显示隐藏的设备”选项后,任何设备名称中都没有带有“警告”小图标(未知/无法识别的设备)或“空”的设备。
Also, apparently "Non-Plug and Play Drivers" type is not even being listed (of course when View -> "Devices by type" is selected).

第三步的结果:%SystemRoot%\system32\drivers\null.sys文件已经存在并从磁盘中删除(从 Windows 10 复制并粘贴到 null.sys 文件中)。
更多详细信息:右键单击任何这些 sys 文件后,上下文菜单中没有“安装”或“卸载”选项,默认操作似乎是“打开方式...”(以粗体显示)。

第四步的结果:尝试合并null.reg失败。重新分配注册表项的所有者HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\Root,同时设置适当的权限。更新注册表项权限后,
null.reg文件已成功合并到注册表中。
重新启动计算机。
等待最终答案...错误仍在显示!
看截图

编辑 2(测试 PATH 环境变量):
看截图 仍然发生相同的错误(即使在以管理员身份打开 git-cmd.exe 或 git-bash.exe 之后)。

编辑 3(电源选项,不使用“允许计算机进入离开模式”设置):
参考线程
看截图

编辑 4
Bennie 将他的机器从 Windows 8.1 升级到 10 后,问题已经解决。我们现在可以简单地得出结论,操作系统已损坏。

4

1 回答 1

13

每当 GUI(这里是 VS 与 Git 集成)退出标称路径(这里 git push 不可能立即)时,恢复到 git 命令行界面。

在您的情况下,伯尼需要 aa 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

请注意, Got for Visual Studiogit pull --rebase 可能很快就会出现(关注@gitforvs):

g4vs

不过还没有什么官方消息。


关于“ Couldn't open /dev/null (or dup failed)”,请查看“使用 GitHub for Windows 时出现错误”是否有帮助(空设备问题)。

如果错误仍然存​​在,如git-for-windows/git issue 583,重新安装 Windows 仍然是摆脱这种困境的最可靠方法。

正如OP OmegaExtern在 Edit 4 中提到的,从 win8 升级到 win10 足以恢复设备并解决问题。

于 2016-01-31T09:17:54.213 回答