如何从存储库中删除“file1.txt”?
当前回答
若你们并没有在本地回购中归档,而是在git回购中归档的话,那个么只需通过web界面在git repo中打开文件,然后在界面的右角找到“删除”按钮。单击此处,查看界面删除选项
其他回答
我尝试了许多建议的选项,但似乎都不起作用(我不会列出各种问题)。我最终所做的(对我来说)简单而直观的工作是:
将整个本地回购转移到其他地方再次将回购从主机克隆到本地驱动器将文件/文件夹从#1中的原始副本复制回#2中的新克隆确保问题大文件不存在或排除在.gitignore文件中执行通常的gitadd/gitcommit/gitpush
gitrm从现在起只会删除该分支上的文件,但它将保留在历史中,git将记住它。
正确的方法是使用gitfilter分支,正如其他人在这里提到的那样。它将重写分支历史记录中的每个提交以删除该文件。
但是,即使在这样做之后,git也能记住它,因为在reflog、remotes、标记等中可以引用它。
如果您想在一个步骤中完全消除它,我建议您使用git forget blob
https://ownyourbits.com/2017/01/18/completely-remove-a-file-from-a-git-repository-with-git-forget-blob/
这很简单,只需git忘记blob file1.text即可。
这将删除每个引用,执行gitfilter分支,最后运行git垃圾收集器gitgc,以彻底清除repo中的此文件。
约翰·肖平编辑的格雷格·休吉尔(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!
https://stackoverflow.com/a/2047477/14508423https://stackoverflow.com/a/19666677/14508423非常相似,两者都尝试了。没有什么Git一直在跟踪文件。(我使用vscode,因此文件立即标记为U(未跟踪)或A(已添加))
这样做https://stackoverflow.com/a/53431148/14508423整个类别解决了这个问题。
这样做可以从git中删除文件,并让git忘记它:
**manually add the file name to .gitignore**
git rm --cached settings.py
git commit -m "remove settings.py"
git push origin master
git rm -r --cached .
git add .
git commit -m "Untrack files in .gitignore"
ps:每次失败时,我都试图删除包含敏感信息的文件,如令牌(.env和settings.py文件)。但它可以处理随机文件
使用git rm。
如果要从Git存储库和文件系统中删除文件,请使用:
git rm file1.txt
git commit -m "remove file1.txt"
但如果您只想从Git存储库中删除文件,而不想从文件系统中删除,请使用:
git rm --cached file1.txt
git commit -m "remove file1.txt"
并将更改推送到远程回购
git push origin branch_name
推荐文章
- 为什么我需要显式地推一个新分支?
- 如何撤消最后的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之间的区别