Github git签出错误:无法创建目录:权限被拒绝

Github git签出错误:无法创建目录:权限被拒绝,github,bitbucket,git-checkout,Github,Bitbucket,Git Checkout,我面临git checkout命令的问题。请帮忙 这就是我所做的 创建了一个本地目录。创建了一些文件。在本地发起git回购 在bitbucket中创建回购并将我的本地回购推送到bitbucket 在本地创建了一个新分支b01 向b01添加了新文件,提交了它们并成功地将分支推送到bitbucket 现在我正试图将b01与master合并,这就是我面临的问题。我不能结帐了 使用的命令列表和错误详细信息: git clone [my repo] git checkout -b b01 此后,我进行了

我面临git checkout命令的问题。请帮忙

这就是我所做的

  • 创建了一个本地目录。创建了一些文件。在本地发起git回购
  • 在bitbucket中创建回购并将我的本地回购推送到bitbucket
  • 在本地创建了一个新分支b01
  • 向b01添加了新文件,提交了它们并成功地将分支推送到bitbucket
  • 现在我正试图将b01与master合并,这就是我面临的问题。我不能结帐了
  • 使用的命令列表和错误详细信息:

    git clone [my repo]
    git checkout -b b01
    
    此后,我进行了多次更改,包括创建新文件和目录,提交了这些更改,并成功地将该分支上的更改推送到repo。比如:

    git push -u origin b01
    
    现在我已经完成了更改,希望将其合并到主分支。所以我做了一个:

    git checkout master
    
    下面是它抛出的错误:

    fatal: cannot create directory at 'workfolder': Permission denied
    
    Git将我保存在b01中,但删除我在分支中创建的所有文件。 所以如果我现在做一个

    git status
    
    它告诉我:

    On branch b01
    Your branch is upto date with 'orgin/b01'
    Changes not staged for commit:
    (use "git add/rm .....)
      deleted: new file1
      deleted: new file2
    <list of the new files I had added but which got deleted as a result of the command>
    
    恢复文件


    请帮忙

    首先,在使用git的每次操作之间,我建议您快速查看git状态。我无法告诉你这多少次让我省去了很多头痛

    我可能会尝试做一些事情来阐明问题:

  • 你说你创建了目录,对b01做了很多修改,然后把它推到了原点。查看此操作的提交`git show。您是否更改了对“workfolder”的父目录的权限

  • 你在windows上吗?如果是,您在目录路径中的深度是多少?路径长度是否超过windows max

  • 如果这些都不起作用,您是否尝试过从b01创建一个一次性分支,并合并“master”?这有时会找出原因

  • 丑陋的圣母玛利亚。您是否尝试过在存储库外复制/粘贴“b01”,回滚到匹配的“master”最后一次提交,然后将更改粘贴到“b01”复制到master上?当事情完全颠倒过来,没有意义时,有时倒过来解决问题,找出哪里出了问题,学会将来不该做什么,会更容易


  • 我也有类似的情况。虽然这是因为我在VisualStudio中打开了解决方案。关闭VisualStudio并执行git重置将我置于一个好位置


    例如,检查是否有任何进程正在锁定文件夹/文件。

    如前所述,当另一个进程正在访问文件时,可能会发生这种情况,因此关闭任何可能正在使用它的应用程序都会有所帮助,因为我打开了可视代码,关闭它确实有帮助。

    我知道这个问题有点老了,但正如上面的答案建议使用——硬标志,这可能不是必需的,我决定发布这个

    可能的问题原因:其他进程正在使用/锁定您试图删除的文件/文件夹

    解决方案:停止此过程,然后重试。找到它的一种方法是通过资源监视器(我从中学到的方法):

  • 打开任务管理器
  • 导航到“性能”选项卡
  • 单击底部的“打开资源监视器”
  • 导航到CPU选项卡
  • 在关联句柄部分,有一个搜索字段-输入目录/文件的路径,您将收到“权限被拒绝”错误
  • (检查并)停止显示为搜索结果的任何进程

  • 在我的例子中,我只是使用提交哈希而不是分支名称签出了有问题的提交。

    304/5000 答案很简单。假设您想使用master将分支捣碎,可以执行以下操作:

    git checkout-b master-2//来自当前分支,所有更改都在该分支中进行
    git分支-D主
    git分支机构-m master-2 master
    git推送源主机
    

    准备好了!请记住,这是为了防止您想要覆盖分支中的所有内容

    您是否使用管理员权限运行Git Bash?这听起来好像它没有创建文件夹的权限。其他事情可能是这个的副作用。我使用的是windows机器。我是这台机器的管理员@TimBiegeleisenUPDATE:我不知道出了什么问题,但我打开了第二个git bash窗口,它通过第二个窗口工作。我没有改变任何事情。我仍然保留这个问题,看看是否有人能理解我做了什么把事情搞砸了。我在windows上,没有换烫发。(2) 当前路径长度为97个字符(带空格)。所以这应该不是问题(3)我该怎么做?您的意思是在分支b01之外创建分支b01a,然后将b01a合并到主分支,而不是将b01合并到主分支?(4) 我没有试过这个。我相信这是一个手动的过程,只有在以上都不起作用的情况下才会尝试。你知道我做错了什么,把事情搞砸了吗?我打开了visual studio和vs代码。其中一个必须是维护文件锁。一旦他们都关闭了
    git checkout foo branch
    对我来说很有效。我也打开了studio和VScode,我只需要关闭VScode,然后就可以通过studio的TFS界面执行操作。关闭VScode并执行
    git重置--hard
    也为我修复了它。但是要小心,大家!在VSCode中,我打开了两个终端。一个用于运行与手表通信的“吞咽”任务,另一个用于“尝试”切换分支。我退出了两个终端,重新打开了一个新的,然后我就可以切换了。谢谢你指出这一点!我在另一个项目的工作区打开了visual studio代码,但它仍然阻止了我的合并。在我关闭了所有visual code studio实例后,它工作得很好。奇怪的是,在我的情况下VS code是一个挂断东西的过程。我关闭了vs代码,并能够签出与PowerShell不同的分支。有人对这个答案投了否决票,我只是想建议,在评论区也写下错误是件好事
    git checkout -- .