如何从存储库中删除“file1.txt”?
当前回答
首先,从本地存储库中删除文件。git rm-r文件名或者,只从本地存储库中删除文件,而从文件系统中删除文件git rm—缓存的文件名其次,将更改提交到本地存储库。gitcommit-m“不需要的文件或一些内联注释”最后,将本地更改更新/推送到远程存储库。数字推送
其他回答
如果您的文件是敏感的(例如,您意外添加并提交的设置或密钥),那么您可以从所有版本中删除它。
要从所有版本中删除,请使用以下命令(警告:小心,因为如果没有副本,您将无法还原回购中删除的文件):
使用Git
git filter-branch --index-filter 'git rm -rf --cached --ignore-unmatch file.ext' HEAD
使用gitfilter repo(在这里获取,git推荐的新方法)
git filter-repo --path file.ext
只需打开github存储库中的文件,就可以看到Raw|Blame旁边的删除图标,不要忘记单击提交更改按钮。您可以看到您的文件已被删除。
gitrm file.txt从repo中删除文件,但也从本地文件系统中删除该文件。
要从存储库中删除文件而不从本地文件系统中删除,请使用:git rm--缓存文件.txt
下面的确切情况是,我使用git来维护我公司网站的版本控制,但“mickey”目录是一个tmp文件夹,用于与CAD开发人员共享私人内容。当他需要庞大的文件时,我创建了一个私有的、未链接的目录,并在那里ftpd文件,供他通过浏览器获取。我忘记了这一点,后来在网站的基本目录中执行了git add-a。随后,git状态显示了需要提交的新文件。现在我需要从git的跟踪和版本控制中删除它们。。。
下面的示例输出来自我刚刚发生的事情,我无意中删除了.003文件。谢天谢地,我不在乎本地副本到.003发生了什么,但其他一些当前更改的文件是我刚刚对网站进行的更新,如果在本地文件系统中被删除,那将是一个史诗!“本地文件系统”=实时网站(不是很好的做法,但却是现实)。
[~/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]$
更新:这个答案获得了一些流量,所以我想我应该提到我的另一个Git答案分享了一些很棒的资源:这个页面有一个帮助我解开Git神秘面纱的图形。“Pro Git”这本书是在线的,对我帮助很大。
在我的案例中,我尝试在几次提交后删除github上的文件,但保存在计算机上
git filter-branch -f --index-filter 'git rm --cached --ignore-unmatch file_name_with_path' HEAD
git push --force -u origin master
后来这个文件被忽略了
约翰·肖平编辑的格雷格·休吉尔(Greg Hewgill)的回答对我很有帮助,因为我并不在乎将文件从历史中完全删除。在我的情况下,它是一个目录,所以我做的唯一更改是使用:
git rm -r --cached myDirectoryName
而不是“git rm--cached file1.txt”..后接:
git commit -m "deleted myDirectoryName from git"
git push origin branch_name
谢谢Greg Hewgill和Johannchopin!
推荐文章
- 为什么我需要显式地推一个新分支?
- 如何撤消最后的git添加?
- Rubymine:如何让Git忽略Rubymine创建的.idea文件
- Gitignore二进制文件,没有扩展名
- Git隐藏错误:Git隐藏弹出并最终与合并冲突
- 了解Git和GitHub的基础知识
- 没有。Git目录的Git克隆
- Git与Mercurial仓库的互操作性
- 忽略git中修改(但未提交)的文件?
- “git restore”命令是什么?“git restore”和“git reset”之间有什么区别?
- Git合并与强制覆盖
- Git拉另一个分支
- 在Bash命令提示符上添加git分支
- 如何更改Git日志日期格式
- git pull -rebase和git pull -ff-only之间的区别