如何从存储库中删除“file1.txt”?
当前回答
我有obj和bin文件,它们意外地进入了repo,我不想污染我的“已更改文件”列表
当我注意到他们去了遥控器后,我将其添加到.gitignore中,忽略了他们
/*/obj
/*/bin
问题是它们已经在远程,当它们被更改时,它们会弹出为已更改,并污染已更改的文件列表。
要停止查看它们,您需要从远程存储库中删除整个文件夹。
在命令提示中:
CD到repo文件夹(即C:\repo\MyRepo)我要删除SSIS\obj。似乎只能在顶层删除,因此现在需要将CD插入SSIS:(即C:\repo\MyRepo\SSSIS)现在输入魔法咒语git rm-r-f objrm=删除-r=递归删除-f=表示力,因为你真的是这么想的obj是文件夹现在运行gitcommit-m“删除obj文件夹”
我收到一条警告消息,说13个文件更改了315222个删除
然后,因为我不想查找CMD行,我进入Visual Sstudio并执行了同步,将其应用到远程
其他回答
此外,如果是要删除的文件夹及其后续子文件夹或文件,请使用:
git rm -r foldername
如果需要从已确定的扩展名中删除文件(例如,已编译的文件),可以执行以下操作一次性删除所有文件:
git remove -f *.pyc
若你们并没有在本地回购中归档,而是在git回购中归档的话,那个么只需通过web界面在git repo中打开文件,然后在界面的右角找到“删除”按钮。单击此处,查看界面删除选项
如果您的文件是敏感的(例如,您意外添加并提交的设置或密钥),那么您可以从所有版本中删除它。
要从所有版本中删除,请使用以下命令(警告:小心,因为如果没有副本,您将无法还原回购中删除的文件):
使用Git
git filter-branch --index-filter 'git rm -rf --cached --ignore-unmatch file.ext' HEAD
使用gitfilter repo(在这里获取,git推荐的新方法)
git filter-repo --path file.ext
注意:如果您只想从git中删除文件,请使用以下命令:
git rm --cached file1.txt
如果您还想从硬盘中删除:
git rm file1.txt
如果要删除文件夹(该文件夹可能包含少量文件),则应使用递归命令删除,如下所示:
git rm -r foldername
如果要删除另一个文件夹中的文件夹
git rm -r parentFolder/childFolder
然后,你可以像往常一样提交和推送。但是,如果您想恢复已删除的文件夹,可以执行以下操作:从git恢复已删除文件是可能的。
来自文档:git rm[-f |--force][-n][-r][-cached][--ignore unmatch][-quiet][--]<file>…选项<文件>…要删除的文件。可以使用Fileglobs(例如*.c)删除所有匹配的文件。如果您希望Git扩展文件glob字符可能需要脱壳逃生。前导目录名(例如dir toremove dir/file1和dir/file2)可以用于删除目录和递归的所有子目录,但这需要要显式给定的-r选项。-f级--力覆盖最新检查。-n个--干运行实际上不要删除任何文件。相反,只需显示它们是否存在于索引中,否则将被命令删除。-r(r)当给定前导目录名时,允许递归删除。-- 此选项可用于将命令行选项与文件列表分开(当文件名可能被误认为命令行选项)。--高速缓存的使用此选项可以取消分级并仅从索引中删除路径。工作树文件,无论是否修改,都将被单独保留。--忽略取消匹配即使没有匹配的文件,也以零状态退出。-问--安静,安静gitrm通常为每个删除的文件输出一行(以rm命令的形式)。此选项将抑制该输出。
阅读更多官方文档。
推荐文章
- 如何设置一个git项目使用外部回购子模块?
- Git同时在两个分支上工作
- 如何在Visual Studio中删除未推送的外向提交?
- Git在两个不同的文件之间的差异
- 我如何使用vimdiff来解决git合并冲突?
- 如何将更改提交到另一个预先存在的分支
- 为什么使用'git rm'来删除文件而不是'rm'?
- 我如何安装imagemagick与自制?
- 致命:git-write-tree:错误构建树
- Git克隆远程存储库的特定版本
- git隐藏的意图用例是什么?
- 从远程Git存储库检索特定的提交
- 如何配置git bash命令行补全?
- 我如何迫使git拉覆盖每一个拉上的一切?
- 撤销“git add <dir>”?