如何从存储库中删除“file1.txt”?
当前回答
更一般地,git help至少可以帮助解决以下简单问题:
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
其他回答
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中的此文件。
使用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 help至少可以帮助解决以下简单问题:
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
如果您的文件是敏感的(例如,您意外添加并提交的设置或密钥),那么您可以从所有版本中删除它。
要从所有版本中删除,请使用以下命令(警告:小心,因为如果没有副本,您将无法还原回购中删除的文件):
使用Git
git filter-branch --index-filter 'git rm -rf --cached --ignore-unmatch file.ext' HEAD
使用gitfilter repo(在这里获取,git推荐的新方法)
git filter-repo --path file.ext
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项目使用外部回购子模块?
- Git同时在两个分支上工作
- 如何在Visual Studio中删除未推送的外向提交?
- Git在两个不同的文件之间的差异
- 我如何使用vimdiff来解决git合并冲突?
- 如何将更改提交到另一个预先存在的分支
- 为什么使用'git rm'来删除文件而不是'rm'?
- 我如何安装imagemagick与自制?
- 致命:git-write-tree:错误构建树
- Git克隆远程存储库的特定版本
- git隐藏的意图用例是什么?
- 从远程Git存储库检索特定的提交
- 如何配置git bash命令行补全?
- 我如何迫使git拉覆盖每一个拉上的一切?
- 撤销“git add <dir>”?