关于github:如何从git存储库中删除目录?

How to remove a directory from git repository?

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


从Git和本地删除目录

您可以使用两个目录签出"master";

1
2
3
git rm -r one-of-the-directories
git commit -m"Remove duplicated directory"
git push origin <your-git-branch> (typically 'master', but not always)

从Git中删除目录,但不是本地目录

正如注释中所提到的,您通常想要做的是从git中删除这个目录,而不是从文件系统(本地)中完全删除它。

在这种情况下,使用:

1
git rm -r --cached myFolder


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

删除目录的步骤

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

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

To ignore that folder from next commits make one file in root named .gitignore
and put that folders name into it. You can put as many as you want

.gitignore文件将如下所示

1
/FolderName

remove directory


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


您可以尝试以下操作:git rm -rf

它将强制删除目录。


如果删除目录中的文件(其他答案解释为使用EDOCX1[3]),那么就git而言,该目录将不再存在。不能提交空目录,也不能删除一个空目录。

这与颠覆不同,你必须明确地使用svn rm emptyfolder/,这也是为什么git的man页面将自己描述为"愚蠢的内容跟踪器"。

有关"如何将空目录添加到Git存储库"的回答链接到有关此主题的常见问题解答:

Currently the design of the git index
(staging area) only permits files to
be listed, and nobody competent enough
to make the change to allow empty
directories has cared enough about
this situation to remedy it.

Directories are added automatically
when adding files inside them. That
is, directories never have to be added
to the repository, and are not tracked
on their own.

You can say"git add

" and it
will add files in there.

If you really need a directory to
exist in checkouts you should create a
file in it. .gitignore works well for
this purpose; you can leave it empty,
or fill in the names of files you
expect to show up in the directory.


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

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

然后只需在远程git目录上推送更改:git push origin


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

1
2
3
4
rm -r folder_name
git add --all
git commit -m"some comment"
git push origin master

master可以替换为存储库的任何其他分支。


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

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

用于删除空文件夹

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

1
rm -r folderName

不需要涉及git。


您可以使用Attrasian源树(Windows)(https://www.atlassian.com/software/source tree/overview)。只需从树中选择文件并按下顶部的"删除"按钮。文件将从本地存储库和本地Git数据库中删除。然后提交,然后推。


要添加新目录:

1
mkdir <YOUR-DIRECTORY>

但是现在Git不知道这个新目录,因为Git跟踪文件而不是目录目录

1
git status

Git不会注意到我们所做的更改,所以我们添加了隐藏的.keep文件,以使Git了解这个新的更改。

1
touch /YOUR-directory/.keep

现在,如果你点击git status,Git就会意识到这些变化。

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

1
rm -r <YOUR-DIRECTORY>

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


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

  • 初始化
  • git config user.name"某人"
  • git config user.email"[email protected]"
  • GIT RM-R
  • git commit-m"删除目录"
  • Git推送源站主服务器

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


    我以前已经提交过该文件夹,并希望删除历史记录中的目录。

    我做了以下工作:

    将文件夹添加到.gitignore中:

    1
    echo Folder_Name/ >> .gitignore

    从所有提交中删除:

    1
    git filter-branch --index-filter 'git rm -rf --cached --ignore-unmatch Folder_Name/' --prune-empty --tag-name-filter cat -- --all

    从旧提交中删除引用:

    1
    git for-each-ref --format="%(refname)" refs/original/ | xargs -n 1 git update-ref -d

    确保所有旧的参考完全删除

    1
    rm -Rf .git/logs .git/refs/original

    执行垃圾收集

    1
    git gc --prune=all --aggressive

    将更改推送到联机存储库:

    1
    git push

    你在这里完成了。

    但您可以使用以下命令将所有更改推送到所有分支:但是小心这个命令!

    1
    2
    git push origin --all --force
    git push origin --tags --force

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