我正试图将一个分支与主分支合并。分支结构:

master
    v0.43

我的重要改动在v0.43中。在v0.43中提交之后,我尝试将v0.43合并到master。我收到以下错误:
发生错误。详细消息:libgit2引发了一个错误。
类别=无效(错误)。无法打开
'C:/users/me/source/repos/my_project xxx/my_project xxx/xxx xxx
x.v12.suo'用于写入:访问被拒绝。
输出窗格中没有其他信息。
当我尝试从v0.43分支更改为主分支时,也会收到上面的错误消息。基本上,我被困在v0.43分支。
请注意,实际项目名称中的“x”模糊字母字符。这些空格有效吗?_有效吗?如果文件夹和文件名有效,并且特殊字符有效,为什么拒绝访问?或者合并是否需要访问此文件?
我知道这是一个Visual Studio用户设置文件。我非常肯定它不包括在Git存储库中-尽管我只检查过:
Git LS文件*.suo
没有返回任何文件。
此问题是否与TFS/Git和Visual Studio或Windows中的设置之间的凭据冲突有关?顺便说一句,我在和2013.2的比赛中赢得了8.1分。
我无法确定Git分支合并是否确实需要访问vs用户设置文件(.suo),或者是否甚至不需要访问此文件。如果它确实需要访问,我该怎么做呢?如果根本不需要这个访问,为什么它会继续尝试?
编辑-附加信息
我刚接触过TFS/Git。要吸收的东西很多。当我最初设置存储库(VisualStudio.com上的local和tfs)时,由于某种原因没有创建default.gitignore,显然是在本地存储库中创建的?我不知道,但当我对我的项目进行更改,然后做出承诺时,我看到事情出现在“排除”和“未跟踪”中。对于git/tfs是绿色的,我右键单击并包含这些排除/未跟踪的文件。我现在知道这是错的。
我想我已经从上述问题中恢复过来了。首先,我实现了一个默认的.gitignore,它专门忽略/bin和/obj。然后我删除了这两个文件夹中的所有内容(通过vs解决方案资源管理器)。他们没有回到包括,排除或未追踪。这解决了一个问题。
下一个问题是我看到项目的.suo包含在v0.43分支中。我看到它应该在默认的.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分支时,对.suo的访问被拒绝。
可能是我试图切换到的主分支试图访问.suo文件?
如果是这样的话,我完全无法解决这个问题。我想在某个时候,苏可能会对总支负责……但我不知道如何安全地访问主分支并从中删除.suo,就像我对v0.43分支所做的那样。
我希望这一切都有意义。的S

最佳答案

我今天有一个非常相似的问题。我无法切换分支,因为出现以下错误:
发生错误。详细消息:无法打开“d:/projects/projectname/database/database.db”进行写入:拒绝访问。
注意:出于显示目的重命名了路径名和文件名
我做的很简单
从文件资源管理器中删除该文件(不在项目中)
Git现在将检测到该文件的删除
Changes视图中撤消此删除操作
我不知道是什么导致了这个问题,我希望有人能找到这个答案。

08-27 21:26
查看更多