Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
防止git删除初始git安装时git忽略中的本地目录_Git - Fatal编程技术网

防止git删除初始git安装时git忽略中的本地目录

防止git删除初始git安装时git忽略中的本地目录,git,Git,我有一个wordpress项目,我想在服务器上安装git。我还想将wp content/plugins目录添加到.gitignore中,以便在git安装过程中不受影响。但是当我在我的本地服务器上这样做时,插件文件夹被删除了 我试过这个 将master重置为initial commit以获取插件文件夹和内容,而gitignore中没有插件 git rm--缓存的-r wp内容/插件/ git pull获取commit,commit删除了plugins文件夹,并将插件放在gitignore中 但它仍

我有一个wordpress项目,我想在服务器上安装git。我还想将wp content/plugins目录添加到.gitignore中,以便在git安装过程中不受影响。但是当我在我的本地服务器上这样做时,插件文件夹被删除了

我试过这个

  • 将master重置为initial commit以获取插件文件夹和内容,而gitignore中没有插件

  • git rm--缓存的-r wp内容/插件/

  • git pull获取commit,commit删除了plugins文件夹,并将插件放在gitignore中

  • 但它仍然会删除plugins文件夹

    如何防止git删除插件和uploads文件夹?插件文件夹也不应位于主分支中

    如何防止git删除[这些]文件夹

    在其中放入一些文件

    这是怎么回事 Git对目录/文件夹并不感兴趣(您先称它们为目录,然后再称它们为文件夹,所以我在这里使用这两个术语)。Git感兴趣并存储文件。就Git而言,文件具有或可能具有长的类似于文件夹的名称,其中包含操作系统坚持以类似文件夹的方式处理的部分。例如,Git可能存储一个名为
    wp content/plugins/file.ext的文件。您的操作系统要求将其存储为名为
    file.ext
    的文件,存储在名为
    plugins
    的文件夹中,存储在名为
    wp content
    的文件夹中。这是你的操作系统的问题,不是Git的问题,但是当Git从某个提交文件中提取名为
    wp content/plugins/file.ext的文件到你计算机上的普通文件时,它就变成了Git的问题

    此时,Git将根据需要创建
    wp content
    ,然后根据需要创建
    wp content/plugins
    ,这样它就可以创建一个文件,对Git来说,这个文件名为
    wp content/plugins/file.ext
    。Git没有将这些文件夹存储在任何位置。它存储了文件
    wp content/plugins/file.ext
    (在提交中),然后你告诉它“接受提交并让它对我可用”,因此它创建了两个目录,因为你的操作系统坚持这个文件夹和文件结构

    因为操作系统坚持,Git将根据需要创建目录/文件夹。同样,当Git删除一个提交的文件,因为您要从该提交切换到其他缺少该文件的提交时,Git将通过删除一个目录/文件夹(如果该目录/文件夹是最后一个迫使Git通过存在该目录/文件夹来适应操作系统的文件)来进行清理

    如果目录中存在其他子目录/文件夹或文件,Git将无法删除该目录/文件夹。因此,如果您有任何未跟踪的文件,例如,Git将不会接触目录

    请注意,
    git clean-df
    将从工作树中删除空目录,无论git是否创建了这些目录。这都是由于Git没有在其索引中存储有关目录/文件夹的信息。索引是Git构建新提交的基础。索引对于Git非常重要:它是合并真正发生的地方;它是构建新提交的地方;它还缓存有关提取的提交的信息,以使Git快速运行

    一般来说,在一个Git命令和下一个Git命令之间,Git不记得它创建的任何目录。它所做的只是:

    • 从索引中删除提交的文件,如果您告诉它更新您的工作树,请从工作树中删除这些相同的文件;及
    • 将提交加载到索引中,如果您告诉它更新您的工作树,请将这些文件替换为其提交(现在是索引副本)版本
    因为索引不跟踪目录,只跟踪长名称的文件,如
    wp content/plugins/file.ext
    -Git实际上无法存储空文件夹。1这就是为什么它使用这种“需要时创建,删除最后一个文件时删除”的技巧

    因为Git使用“删除最后一个文件时删除工作树文件夹”,所以阻止Git删除这样一个目录/文件夹的唯一方法就是在其中留下一些文件。这可以是一个已提交的文件,例如空的
    .gitignore
    或空的
    .keep
    或任何您喜欢的文件,或者只是一些未跟踪的文件。如果是未跟踪的文件,Git本身也不会创建目录:您必须这样做

    请参阅脚注链接,了解如何使用空子模块而不是伪
    .gitignore
    ,但我要注意的是,如果我这样做,我只会使用伪
    .gitignore
    (可能不是空的,而是一行读取
    *


    1但是,它可以通过gitlink存储子模块,gitlink可以指向没有文件的存储库。因此,它实际上可以存储一个空目录!很遗憾,索引不能存储mode
    40000
    目录,因为如果可以的话,Git可以存储和管理空文件夹,而不必使用“使用空子模块”技巧