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

我有我的GitHub存储库上的2个目录。 我想删除其中的一个。 我怎么能做到这一点,而不删除和重新创build整个存储库?

从git和local删除目录

你可以签出两个目录“主”;

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中删除这个目录,但不能从文件系统(本地)中完全删除它,

在这种情况下使用:

 git rm -r --cached myFolder 

只从git仓库中删除文件夹/目录,而不是从本地尝试3个简单的命令。


删除目录的步骤

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

在接下来的提交中忽略该文件夹的步骤

要忽略来自下一次提交的文件夹,请创build一个名为.gitignore的文件,并将该文件夹的名称放入其中。 你可以放多less你想要的

.gitignore文件将如下所示

 /FolderName 

删除目录

如果出于某种原因,karmakaze所说的不起作用,可以尝试删除要删除的目录(通过文件系统浏览器),发出命令
git add -A
接着
git commit -m 'deleting directory'
接着
git push origin master

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

这是不同的颠覆,你必须明确svn rm emptyfolder/ ,并且顺便说一句,为什么git man页描述自己是“愚蠢的内容跟踪器”

关于“如何将一个空目录添加到git存储库”的答案链接到这个主题的常见问题 :

目前,git索引(登台区域)的devise只允许列出文件,没有人能胜任这个更改,以允许空目录已经足够关心这种情况来解决这个问题。

添加文件时自动添加目录。 也就是说,目录永远不必被添加到存储库,并且不会自行跟踪。

你可以说“ git add <dir> ”,它会在那里添加文件。

如果你确实需要一个目录在结帐中存在,你应该在其中创build一个文件。 .gitignore适合这个目的; 您可以将其保留为空,或者填写您希望在目录中显示的文件的名称。

你可以试试这个: git rm -rf <directory_name>

它会强制删除目录。

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

 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可以被存储库的任何其他分支replace。

您可以使用Attlasian源代码树(Windows)( https://www.atlassian.com/software/sourcetree/overview )。 只需从树中select文件,然后按下顶部的“删除”button即可。 文件将从本地存储库和本地git数据库中删除。 然后提交,然后推送。

我的一位同事build议我认为强大的BFG Repo-Cleaner 。 它不仅可以删除不需要的数据,还可以清除存储库中的相关提交信息。

首先git命令需要知道你是谁之前删除任何东西

  1. git init
  2. git config user.name“someone”
  3. git config user.email“someone@someplace.com”
  4. git rm -r
  5. git commit -m“删除目录”
  6. git推送起源大师

要添加新目录:

 mkdir <YOUR-DIRECORT> 

但是现在Git没有意识到这个新目录,因为Git保持文件的目录不是DIRECTORY目录

 git status 

git不会意识到我们所做的更改,所以我们添加隐藏的.keep文件以使Git知道这个新的更改。

 touch /YOUR-directory/.keep 

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

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

 rm -r <YOUR-DIRECORT> 

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