Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/23.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/github/3.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_Github_Bitbucket_Delete File_Git Bash - Fatal编程技术网

如何从git存储库中删除目录?

如何从git存储库中删除目录?,git,github,bitbucket,delete-file,git-bash,Git,Github,Bitbucket,Delete File,Git Bash,我的GitHub存储库中有2个目录。我想删除其中一个。在不删除和重新创建整个存储库的情况下,我如何做到这一点?从git和local中删除目录 您可以使用两个目录签出“master” git rm -r one-of-the-directories // This deletes from filesystem git commit . -m "Remove duplicated directory" git push origin <your-git-branch> (typical

我的GitHub存储库中有2个目录。我想删除其中一个。在不删除和重新创建整个存储库的情况下,我如何做到这一点?

从git和local中删除目录 您可以使用两个目录签出“master”

git rm -r one-of-the-directories // This deletes from filesystem
git commit . -m "Remove duplicated directory"
git push origin <your-git-branch> (typically 'master', but not always)

如果出于某种原因,karmakaze所说的不起作用,您可以尝试使用或使用您的文件系统浏览器(例如,在Windows文件资源管理器中)删除您想要的目录。删除目录后,发出命令:
git add-A

然后
git提交-m'删除目录'

然后

git-push-origin-master

如果您删除目录中的文件(如其他答案所述,使用
git-rm
),那么就git而言,目录不再存在。不能提交空目录,也不能删除空目录

这与subversion不同,在subversion中,您必须显式地
svn rm emptyfolder/
,这也是为什么git的
man
页面将自己描述为“愚蠢的内容跟踪器”的原因

有关以下链接的答案:

目前正在设计git索引 (暂存区域)仅允许文件 被列入名单,没有人能胜任 进行更改以允许为空 目录已经足够关心了 这种情况需要补救

目录会自动添加 在其中添加文件时。那个 也就是说,永远不必添加目录 到存储库,并且不会被跟踪 他们自己

你可以说“
git add
”然后 将在其中添加文件

如果你真的需要一个目录 存在于签出中您应该创建一个 把它归档。gitignore对于 这一目的;你可以让它空着, 或者填写您需要的文件名 希望显示在目录中

您可以尝试以下方法:
git rm-rf

它将强制删除目录。

要仅从git存储库而不是从本地删除文件夹/目录,请尝试3个简单命令。
删除目录的步骤

git rm -r --cached FolderName
git commit -m "Removed folder from repository"
git push origin master

在下次提交时忽略该文件夹的步骤

要从下一次提交中忽略该文件夹,请在根文件夹(git初始化的主项目目录)中创建一个名为.gitignore 并将该文件夹名称放入其中。您可以忽略任意数量的文件/文件夹

.gitignore文件将如下所示

/FolderName


您可以使用Atlasian源代码树(Windows)()。
只需从树中选择文件并按下顶部的“删除”按钮。文件将从本地存储库和本地git数据库中删除。然后提交,然后推送。

您可以在本地删除文件夹,然后推送,如下所示:

git rm -r folder_name
git commit -m "your commit"
git push origin master

转到git目录,然后键入以下命令: rm-rf

删除目录后,通过以下方式提交更改: git commit-m“您的提交消息”

然后只需将更改推送到远程GIT目录:
git-push-origin

我通常使用
git-add--all
从远程存储库中删除文件/文件夹

rm -r folder_name
git add --all
git commit -m "some comment"
git push origin master

master
可以被存储库的任何其他分支所取代。

我的一位同事建议,我认为这很有效。它不仅可以删除不需要的数据,还可以从任何相关的提交信息中清除存储库。

第一个git命令需要在删除任何内容之前知道您是谁

  • git初始化
  • git config user.name“someone”
  • git config user.email“someone@someplace.com"
  • 吉特rm-r
  • git提交-m“删除目录”
  • git推送原始主机以添加新目录:

    mkdir <YOUR-DIRECTORY>
    
    Git不会意识到我们所做的更改,因此我们添加了隐藏的
    。保留
    文件以使Git意识到这个新更改

    touch /YOUR-directory/.keep
    
    现在,如果点击
    git status
    git将知道这些更改

    如果你想删除这个目录,你应该使用这个命令

    rm -r <YOUR-DIRECTORY>
    
    rm-r
    

    如果您使用
    git status
    进行检查,您将看到目录已被删除。

    对于删除空文件夹

    我想删除我创建的一个空目录(文件夹),git无法删除它,经过一些研究我了解到 Git不跟踪空目录。如果您的工作树中有一个空目录,您只需使用

    rm -r folderName
    

    没有必要涉及Git。

    我之前已经提交了该文件夹,并且希望删除历史记录中的目录

    我做了以下工作:

    将文件夹添加到
    .gitignore

    echo Folder_Name/ >> .gitignore
    
    从所有提交中删除:

    git filter-branch --index-filter 'git rm -rf --cached --ignore-unmatch Folder_Name/' --prune-empty --tag-name-filter cat -- --all
    
    从旧提交中删除引用:

    git for-each-ref --format="%(refname)" refs/original/ | xargs -n 1 git update-ref -d
    
    确保所有旧参考完全移除

    rm -Rf .git/logs .git/refs/original
    
    执行垃圾收集

    git gc --prune=all --aggressive
    
    将更改推送到联机存储库:

    git push
    
    你到此为止

    但您可以通过以下操作将所有更改推送到所有分支: 但是要小心这个命令

    git push origin --all --force
    git push origin --tags --force
    

    之后,该文件夹被从git中删除,但没有从本地磁盘中删除。

    这两个答案的组合对我很有用

    git rm -r one-of-the-directories
    git commit . -m "Remove duplicated directory"
    git push
    
    如果仍显示一些警告,请手动删除这些文件

    git filter-branch --tree-filter 'rm -rf path/to/your/file' HEAD
    git push
    
    尝试
    rm-r-f
    rm-r--force
    -
    强制删除文件夹

    目录中是否有文件?@Iarsmans:Yes 6个文件。两个目录都是相同的,除了一个是大写的,另一个是小写的。您只需要:
    git rm-r--cached folder\u name
    我的情况完全相同。当我尝试
    git rm-r myFolder
    时,它工作了,但也删除了“myFolder”目录中的所有内容。必须还原“MyFolder”目录中的所有内容,然后提交。@Justin若要仅从git中删除并保持文件系统不变,请使用
    git rm-r--cached MyFolder
    我收到的错误消息是:致命:pathspec“目录”与任何文件都不匹配。@user2441441我在尝试时出现了此错误
    git rm -r one-of-the-directories
    git commit . -m "Remove duplicated directory"
    git push
    
    git filter-branch --tree-filter 'rm -rf path/to/your/file' HEAD
    git push