[~/www]$ git rm shop/mickey/mtt_flange_SCN.7z.003
error: 'shop/mickey/mtt_flange_SCN.7z.003' has local modifications
(use --cached to keep the file, or -f to force removal)
[~/www]$ git rm -f shop/mickey/mtt_flange_SCN.7z.003
rm 'shop/mickey/mtt_flange_SCN.7z.003'
[~/www]$
[~/www]$ git status
# On branch master
# Changes to be committed:
# (use "git reset HEAD <file>..." to unstage)
#
# deleted: shop/mickey/mtt_flange_SCN.7z.003
#
# Changed but not updated:
# (use "git add <file>..." to update what will be committed)
# (use "git checkout -- <file>..." to discard changes in working directory)
#
# modified: shop/mickey/mtt_flange_SCN.7z.001
# modified: shop/mickey/mtt_flange_SCN.7z.002
[~/www]$ ls shop/mickey/mtt_flange_S*
shop/mickey/mtt_flange_SCN.7z.001 shop/mickey/mtt_flange_SCN.7z.002
[~/www]$
[~/www]$
[~/www]$ git rm --cached shop/mickey/mtt_flange_SCN.7z.002
rm 'shop/mickey/mtt_flange_SCN.7z.002'
[~/www]$ ls shop/mickey/mtt_flange_S*
shop/mickey/mtt_flange_SCN.7z.001 shop/mickey/mtt_flange_SCN.7z.002
[~/www]$
[~/www]$
[~/www]$ git status
# On branch master
# Changes to be committed:
# (use "git reset HEAD <file>..." to unstage)
#
# deleted: shop/mickey/mtt_flange_SCN.7z.002
# deleted: shop/mickey/mtt_flange_SCN.7z.003
#
# Changed but not updated:
# modified: shop/mickey/mtt_flange_SCN.7z.001
[~/www]$
zhasper@berens:/media/Kindle/documents$ git help
usage: git [--version] [--exec-path[=GIT_EXEC_PATH]] [--html-path] [-p|--paginate|--no-pager] [--bare] [--git-dir=GIT_DIR] [--work-tree=GIT_WORK_TREE] [--help] COMMAND [ARGS]
The most commonly used git commands are:
add Add file contents to the index
:
rm Remove files from the working tree and from the index
18 回答
如果要从repo中删除文件,但将其保留在文件系统中(将不会跟踪):
如果要从repo和文件系统中删除文件,则有两个选项:
使用git rm:
但是,如果您只想从Git存储库中删除文件而不是从文件系统中删除它,请使用:
并将更改推送到远程仓库
git rm file.txt
从repo中删除文件但 also deletes it from the local file system .要从repo中删除文件并 not 从本地文件系统中删除它,请使用:
git rm --cached file.txt
下面的确切情况是我使用git维护我公司网站的版本控制,但"mickey"目录是一个tmp文件夹,用于与CAD开发人员共享私人内容 . 当他需要巨大的文件时,我创建了一个私有的,未链接的目录和ftpd文件,供他通过浏览器获取 . 忘记我做了这个,后来我从网站的基本目录中执行了
git add -A
. 随后,git status
显示了需要提交的新文件 . 现在我需要从git的跟踪和版本控制中删除它们......下面的示例输出来自我刚刚发生的事情,我无意中删除了
.003
文件 . 值得庆幸的是,我并不关心.003
本地副本发生了什么,但是其他一些当前更改的文件是我刚刚对网站所做的更新,并且会在本地文件系统上删除史诗! "Local file system" =直播网站(不是很棒的做法,但却是现实) .Update: 这个答案正在增加一些流量,所以我想我会提到我的other Git answer分享了几个很棒的资源:This page有一个图形可以帮助我揭开Git的神秘面纱 . "Pro Git" book is online并帮了我很多忙 .
如果您的文件已经在GitHub上,you now (July 2013) can直接从Web GUI删除它!
(提交将反映删除该文件):
最后一句意味着删除的文件仍然是历史记录的一部分,您可以轻松地恢复它(但尚未通过GitHub Web界面):
见“Restore a deleted file in a Git repo” .
这是唯一对我有用的选项 .
注意:将* .sql替换为您的文件名或文件类型 . 要非常小心,因为这会经历每次提交并将此文件类型翻录出来 .
此外,如果它是要删除的文件夹及其后续子文件夹或文件,请使用:
更一般地说,
git help
将至少帮助解决这样的简单问题:git rm
将仅从现在开始删除此分支上的文件,但它仍保留在历史记录中,git将记住它 .正确的做法是
git filter-branch
,正如其他人在这里提到的那样 . 它将重写分支历史记录中的每个提交以删除该文件 .但是,即使这样做,git也能记住它,因为在reflog,remotes,tags等中可以引用它 .
如果你想一步完全消除它,我建议你使用
git forget-blob
https://ownyourbits.com/2017/01/18/completely-remove-a-file-from-a-git-repository-with-git-forget-blob/
这很容易,只需做
git forget-blob file1.txt
.这将删除每个引用,执行
git filter-branch
,最后运行git垃圾收集器git gc
以完全删除repo中的此文件 .另一种方法是,如果要使用rm命令从本地文件夹中删除该文件,然后将更改推送到远程服务器 .
删除特定文件
以单次递归方式从目录中清除所有未跟踪文件
如果你有GitHub for Windows应用程序,你可以通过5个简单的步骤删除文件:
单击“同步” .
单击文件所在的目录,然后选择最新版本的文件 .
点击工具并选择"Open a shell here."
在shell中,键入:"rm "并按Enter键 .
提交更改并重新同步 .
在我的情况下,我尝试在几次提交后删除github上的文件,但保存在计算机上
后来这个文件被忽略了
或者,仅从本地存储库但从文件系统中删除文件
我尝试了很多建议的选项,似乎都没有工作(我不会列出各种问题) . 我最终做了什么,哪个有效,简单直观(对我来说)是:
将整个本地回购搬到其他地方
再次从主服务器到本地驱动器克隆存储库
将文件/文件夹从#1中的原始副本复制回#2中的新克隆
确保.gitignore文件中不存在或排除问题大文件
做通常的git add / git commit / git push
注意:如果您只想从git中删除文件,请使用以下内容:
如果要从硬盘中删除:
如果要删除文件夹(该文件夹可能包含少量文件),则应使用递归命令删除,如下所示:
如果要删除其他文件夹中的文件夹
然后,你可以照常
commit
和push
. 但是,如果要恢复已删除的文件夹,可以按照以下步骤操作:recover deleted files from git is possible.命令行选项) . --cached使用此选项仅从索引中取消暂存和删除路径 . 无论是否修改了工作树文件,都将保持不变 .
--ignore-unmatch即使没有文件匹配,也退出状态为零 .
-q --quiet git rm通常为每个删除的文件输出一行(以rm命令的形式) . 此选项会抑制输出 .
Read more on official doc.
我有obj和bin文件意外地进入了我不想污染我的'更改文件'列表的仓库
在我注意到他们去了遥控器后,我通过将其添加到
.gitignore
来忽略它们问题是它们已经在远程中,当它们被更改时,它们会弹出更改并污染已更改的文件列表 .
要停止查看它们,您需要从远程存储库中删除整个文件夹 .
在命令提示符中:
CD到repo文件夹(即
C:\repos\MyRepo
)我想删除SSIS \ obj . 看来你只能在顶层删除,所以你现在需要把CD转成SSIS :(即
C:\repos\MyRepo\SSIS
)现在输入魔法咒语
git rm -r -f obj
rm =删除
-r =递归删除
-f =意味着力量,因为你真的是指它
obj是文件夹
现在运行
git commit -m "remove obj folder"
我收到一条惊人的消息,说13个文件改变了315222删除
然后因为我不想查看CMD行,我进入Visual Sstudio并进行同步将其应用到远程
使用
git rm
从repo中删除文件后,您可以使用BFG Repo-Cleaner完全轻松地从repo历史记录中删除该文件 .如果你没有在你的本地仓库中存档但是在git repo中,那么只需通过web界面在git repo中打开文件,然后在界面的右上角找到删除按钮 . Click Here, To view interface Delete Option