Sah*_*bov 1138 git github bitbucket delete-file git-bash
我的GitHub存储库中有2个目录.我想删除其中一个.如果不删除并重新创建整个存储库,我怎么能这样做?
kar*_*aze 2141
你可以用两个目录签出'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)
Run Code Online (Sandbox Code Playgroud)
正如评论中所提到的,你通常要做的是从git中删除这个目录,但不要完全从文件系统中删除它(本地)
在这种情况下使用:
git rm -r --cached myFolder
Run Code Online (Sandbox Code Playgroud)
eir*_*ios 260
删除目录的步骤
git rm -r --cached FolderName
git commit -m "Removed folder from repository"
git push origin master
Run Code Online (Sandbox Code Playgroud)
在下次提交中忽略该文件夹的步骤
要在下次提交时忽略该文件夹,请在根目录中创建一个名为.gitignore的文件 ,并将该文件夹名称放入其中.您可以根据需要添加任意数量
.gitignore文件将如下所示
/FolderName
Run Code Online (Sandbox Code Playgroud)
cmc*_*loh 72
如果由于某种原因,karmakaze所说的不起作用,您可以尝试删除您想要使用的目录或使用您的文件系统浏览器(例如,在Windows文件资源管理器中).删除目录后,发出命令:
git add -A
然后
git commit -m 'deleting directory'
再
git push origin master
.
dbr*_*dbr 16
如果你删除目录中的文件(与git rm
其他答案解释),那么就git而言,目录不再存在.您不能提交空目录,也不能删除它.
这与你必须明确的subversion不同svn rm emptyfolder/
,顺便说一句,为什么man
git 的页面将自己描述为"愚蠢的内容跟踪器"
关于"如何将空目录添加到git存储库"的答案链接到此主题的常见问题解答:
目前git索引(临时区域)的设计只允许列出文件,没有人能够进行更改以允许空目录已经足够关注这种情况来弥补它.
在其中添加文件时会自动添加目录.也就是说,目录永远不必添加到存储库中,并且不会自己跟踪.
你可以说"
git add <dir>
",它会在那里添加文件.如果您确实需要在结帐中存在目录,则应在其中创建一个文件..gitignore很适合这个目的; 您可以将其留空,或填写您希望在目录中显示的文件的名称.
Sky*_*org 14
我之前已经提交了该文件夹,并且还想删除历史记录中的目录。
我做了以下事情:
将文件夹添加到.gitignore
:
echo Folder_Name/ >> .gitignore
Run Code Online (Sandbox Code Playgroud)
从所有提交中删除:
git filter-branch --index-filter 'git rm -rf --cached --ignore-unmatch Folder_Name/' --prune-empty --tag-name-filter cat -- --all
Run Code Online (Sandbox Code Playgroud)
从旧提交中删除引用:
git for-each-ref --format="%(refname)" refs/original/ | xargs -n 1 git update-ref -d
Run Code Online (Sandbox Code Playgroud)
确保完全删除所有旧参考
rm -Rf .git/logs .git/refs/original
Run Code Online (Sandbox Code Playgroud)
执行垃圾收集
git gc --prune=all --aggressive
Run Code Online (Sandbox Code Playgroud)
将您的更改推送到在线存储库:
git push
Run Code Online (Sandbox Code Playgroud)
你在这里完成了。
但是您可以使用以下命令将所有更改推送到所有分支:但要小心此命令!
git push origin --all --force
git push origin --tags --force
Run Code Online (Sandbox Code Playgroud)
之后,该文件夹从 git 中删除,但未从本地磁盘中删除。
小智 6
您可以在本地删除该文件夹,然后push,如下:
git rm -r folder_name
git commit -m "your commit"
git push origin master
Run Code Online (Sandbox Code Playgroud)
小智 6
转到您的git目录,然后键入以下命令: rm -rf < 目录名称 >
删除目录后,通过以下方式提交更改: git commit -m"您的提交消息"
然后只需在远程GIT目录上推送更改: git push origin < Branch name >
我通常用来git add --all
从远程存储库中删除文件/文件夹
rm -r folder_name
git add --all
git commit -m "some comment"
git push origin master
Run Code Online (Sandbox Code Playgroud)
master
可以被存储库的任何其他分支替换。
用于删除空文件夹
我想删除我创建的空目录(文件夹),git无法删除它,经过一些研究,我得知Git不会跟踪空目录。如果您的工作树中有一个空目录,则只需使用以下命令将其删除
rm -r folderName
Run Code Online (Sandbox Code Playgroud)
无需参与Git。
两个答案的结合对我有用
git rm -r one-of-the-directories
git commit . -m "Remove duplicated directory"
git push
Run Code Online (Sandbox Code Playgroud)
如果仍然显示一些警告,请手动删除文件
git filter-branch --tree-filter 'rm -rf path/to/your/file' HEAD
git push
Run Code Online (Sandbox Code Playgroud)