我的GitHub存储库中有2个目录 . 我想删除其中一个 . 如果不删除并重新创建整个存储库,我怎么能这样做?
Steps to remove directory
git rm -r --cached FolderName git commit -m "Removed folder from repository" git push origin master
Steps to ignore that folder in next commits
要在下次提交时忽略该文件夹,请在根目录中创建一个名为.gitignore的文件,并将该文件夹名称放入其中 . 您可以根据需要添加任意数量
.gitignore 文件将如下所示
/FolderName
我通常使用 git add --all 从远程存储库中删除文件/文件夹
git add --all
rm -r folder_name git add --all git commit -m "some comment" git push origin master
master 可以由存储库的任何其他分支替换 .
master
您可以使用Attlasian源树(Windows)(https://www.atlassian.com/software/sourcetree/overview) . 只需从树中选择文件,然后按下顶部的按钮"Remove"即可 . 文件将从本地存储库和本地git数据库中删除 . 然后提交,然后推送 .
转到您的git目录,然后键入以下命令: rm -rf <Directory Name>
删除目录后提交更改: git commit -m "Your Commit Message"
然后只需在远程GIT目录上推送更改: git push origin <Branch name>
我的一位同事提出了BFG Repo-Cleaner,我觉得这很有用 . 它不仅可以删除不需要的数据,还可以从任何相关的提交信息中清除存储库 .
你可以用两个目录签出'master';
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 rm -r --cached myFolder
如果删除目录中的文件(其他答案解释为 git rm ),则就git而言,该目录不再存在 . 您不能提交空目录,也不能删除它 .
git rm
这与subversion不同,你必须明确 svn rm emptyfolder/ ,顺便说一句,为什么git的 man 页面将自己描述为"the stupid content tracker"
svn rm emptyfolder/
man
答案"How do I add an empty directory to a git repository"链接到FAQ on this subject:
目前git索引(临时区域)的设计只允许列出文件,没有人能够进行更改以允许空目录已经足够关注这种情况来弥补它 . 在其中添加文件时会自动添加目录 . 也就是说,目录永远不必添加到存储库,并且不会自己跟踪 . 你可以说“git add <dir>”,它会在那里添加文件 . 如果您确实需要在结帐中存在目录,则应在其中创建一个文件 . .gitignore很适合这个目的;您可以将其留空,或填写您希望在目录中显示的文件的名称 .
您可以在本地删除该文件夹,然后按,如下所示:
git rm -r folder_name git commit -m "your commit" git push origin master
在删除任何内容之前,第一个git命令需要知道你是谁
git init
git config user.name "someone"
git config user.email "someone@someplace.com"
git rm -r
git commit -m "deleting dir"
git push origin master
你可以试试这个: git rm -rf <directory_name>
它会强制删除目录 .
如果由于某种原因,karmakaze所说的不起作用,您可以尝试删除要删除的目录(通过文件系统浏览器),发出命令git add -A然后git commit -m 'deleting directory'然后git push origin master .
git add -A
git commit -m 'deleting directory'
要添加新目录:
mkdir <YOUR-DIRECTORY>
但是现在Git并没有意识到这个新目录,因为Git保留了文件的跟踪而不是目录DIRECTORY
git status
Git赢了't be aware with the change we' ve,所以我们添加了隐藏的 .keep 文件,让Git意识到这个新的变化 .
.keep
touch /YOUR-directory/.keep
现在,如果你点击 git status ,Git会意识到这些变化 .
如果要删除目录,则应使用此命令 .
rm -r <YOUR-DIRECTORY>
如果您使用 git status 进行了检查,则会看到该目录已被删除 .
12 回答
仅从git存储库中删除文件夹/目录,而不是从本地try 3简单命令中删除 .
Steps to remove directory
Steps to ignore that folder in next commits
.gitignore 文件将如下所示
我通常使用
git add --all
从远程存储库中删除文件/文件夹master
可以由存储库的任何其他分支替换 .您可以使用Attlasian源树(Windows)(https://www.atlassian.com/software/sourcetree/overview) . 只需从树中选择文件,然后按下顶部的按钮"Remove"即可 . 文件将从本地存储库和本地git数据库中删除 . 然后提交,然后推送 .
转到您的git目录,然后键入以下命令: rm -rf <Directory Name>
删除目录后提交更改: git commit -m "Your Commit Message"
然后只需在远程GIT目录上推送更改: git push origin <Branch name>
我的一位同事提出了BFG Repo-Cleaner,我觉得这很有用 . 它不仅可以删除不需要的数据,还可以从任何相关的提交信息中清除存储库 .
从git和local中删除目录
你可以用两个目录签出'master';
从git中删除目录但不是本地的
正如评论中所提到的,你通常要做的是从git中删除这个目录,但不要完全从文件系统中删除它(本地)
在这种情况下使用:
如果删除目录中的文件(其他答案解释为
git rm
),则就git而言,该目录不再存在 . 您不能提交空目录,也不能删除它 .这与subversion不同,你必须明确
svn rm emptyfolder/
,顺便说一句,为什么git的man
页面将自己描述为"the stupid content tracker"答案"How do I add an empty directory to a git repository"链接到FAQ on this subject:
您可以在本地删除该文件夹,然后按,如下所示:
在删除任何内容之前,第一个git命令需要知道你是谁
git init
git config user.name "someone"
git config user.email "someone@someplace.com"
git rm -r
git commit -m "deleting dir"
git push origin master
你可以试试这个: git rm -rf <directory_name>
它会强制删除目录 .
如果由于某种原因,karmakaze所说的不起作用,您可以尝试删除要删除的目录(通过文件系统浏览器),发出命令
git add -A
然后
git commit -m 'deleting directory'
然后
git push origin master
.要添加新目录:
但是现在Git并没有意识到这个新目录,因为Git保留了文件的跟踪而不是目录DIRECTORY
Git赢了't be aware with the change we' ve,所以我们添加了隐藏的
.keep
文件,让Git意识到这个新的变化 .现在,如果你点击
git status
,Git会意识到这些变化 .如果要删除目录,则应使用此命令 .
如果您使用
git status
进行了检查,则会看到该目录已被删除 .