我正在尝试将分支与主服务器合并。分支结构:
master
v0.43
我的重要变化是在v0.43。在v0.43中进行提交后,我尝试将v0.43合并到master。我收到以下错误:
发生错误。详细消息:libgit2引发了一个错误。 类别=无效(错误)。打不开 'C:/ Users / Me / Source / Repos /MyüProjectXX/MyüProjectXXX/ XXX XXX X.v12.suo'用于写入:访问被拒绝。
“输出”窗格中没有其他信息。
当我只是尝试从v0.43分支更改为主分支时,我也收到上述错误消息。基本上,我被困在v0.43分支中。
请注意,“X”在实际项目名称中隐藏了字母字符。这些空间有效吗? ü有效吗?如果文件夹和文件名有效,并且特殊字符有效,为什么拒绝访问?或者合并是否需要访问此文件?
我知道它是Visual Studio用户设置文件。我很确定它不包含在GIT存储库中 - 尽管我只检查过:
git ls-files * .suo
不返回任何文件。
此问题是否与TFS / GIT与Visual Studio或Windows中的设置之间的凭据冲突有关?顺便说一下,我在Win 8.1上运行VS 2013.2。
我无法确定GIT分支合并是否真的需要访问VS用户设置文件(.suo),或者是否甚至不需要访问此文件。如果确实需要访问权限,我可以尝试实现这一目标吗?如果根本不需要这种访问,为什么还要继续尝试?
编辑 - 其他信息
我是TFS / GIT的新手。吸收很多东西。当我最初设置存储库(visualstudio.com上的本地和TFS)时,默认的.gitignore由于某种原因没有被创建,显然是在我的本地存储库中?我不知道,但是当我对我的项目进行更改然后进行提交时,我看到的内容出现在“Excluded”和“Untracked”中。对于GIT / TFS是绿色的,我右键单击并包含这些Excluded / Untracked文件。我现在知道这是错的。
我想我已经从上述问题中恢复过来了。首先,我实现了一个默认的.gitignore,专门忽略/ bin和/ obj。然后我删除了这两个文件夹中的所有内容(通过VS Solution Explorer)。他们没有回来作为包含,排除或未跟踪。这解决了一个问题。
接下来的问题是我看到v0.43分支中包含了项目的.suo。我看到它应该在默认的.gitignore(* .suo)中被忽略,因此我需要将它从v0.43分支中删除,但它并不像删除未使用的文件那么容易。我是通过命令行使用:
完成的我能够看到.suo存在使用:
git ls-files *.suo
我将其删除:
git rm --cached "*.suo"
git commit -m "Delete *.suo file from repository"
...我能够通过执行相同的ls-files命令确认它已被删除。它不再出现在v0.43分支中。我做了提交并与TFS同步。现在我收到上面提到的错误 - 每当我尝试将v0.43合并到master或甚至切换到master分支时,Access都被拒绝到.suo。
我正在尝试切换 TO 并试图访问.suo文件,这可能是主分支?
如果是这样的话,我完全不知道如何解决这个问题。我想.suo有可能在某个时候被提交到主分支......但我不知道如何安全地访问主分支并从中删除.suo就像我对v0.43分支一样。
我希望这一切都有道理。 :S
答案 0 :(得分:8)
我今天遇到了一个非常类似的问题。我无法切换分支,因为出现了这个错误:
发生错误。详细消息:无法打开'D:/Projects/ProjectName/Database/database.db'进行写入:访问被拒绝。
注意:为了显示目的,重命名了路径名和文件名
我做的很简单
Changes
视图我不确定是什么导致了这个问题,我希望有人觉得这个答案很有帮助。
答案 1 :(得分:1)
我现在正在研究这个问题,并认为这是问题的答案
* .sou文件是Visual Studio用户首选项的一部分。它出现在" .vs"文件夹是"隐藏文件夹"与你的解决方案一起。
如果您使用Team Services作为Git存储库,那么您只需删除" .vs"文件夹,它将被标记为"已删除/ {folder} /。vs"
要删除Team Services中的文件夹:在Team Services中找到该项目,并将鼠标悬停在" Code"下拉菜单并选择" Files"。导航到.sln文件夹,您将找到" .vs"夹。删除" .vs" " righ-click"在上面并选择"删除"
不应再跟踪该文件夹。
答案 2 :(得分:0)