如何从存储库中删除“file1.txt”?
当前回答
根据文件。
git rm—缓存文件1.xt
当涉及到敏感数据时,最好不要说您删除了该文件,而是将其包含在最后一次已知提交中:
0.修改上次提交
git commit --amend -CHEAD
如果要从所有git历史记录中删除该文件,根据文档,应执行以下操作:
1.将其从本地历史记录中删除
git filter-branch --force --index-filter \ "git rm --cached --ignore-unmatch PATH-TO-YOUR-FILE-WITH-SENSITIVE-DATA" \ --prune-empty --tag-name-filter cat -- --all
# Replace PATH-TO-YOUR-FILE-WITH-SENSITIVE-DATA with the path to the file you want to remove, not just its filename
不要忘记将此文件包含在.gitignore中(如果它是一个您永远不想共享的文件(例如密码…):
echo "YOUR-FILE-WITH-SENSITIVE-DATA" >> .gitignore
git add .gitignore
git commit -m "Add YOUR-FILE-WITH-SENSITIVE-DATA to .gitignore"
3.如果需要从遥控器中移除
git push origin --force --all
4.如果您还需要将其从标签发布中删除:
git push origin --force --tags
其他回答
更一般地,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
我尝试了许多建议的选项,但似乎都不起作用(我不会列出各种问题)。我最终所做的(对我来说)简单而直观的工作是:
将整个本地回购转移到其他地方再次将回购从主机克隆到本地驱动器将文件/文件夹从#1中的原始副本复制回#2中的新克隆确保问题大文件不存在或排除在.gitignore文件中执行通常的gitadd/gitcommit/gitpush
如果您有GitHub for Windows应用程序,您可以通过5个简单步骤删除文件:
单击同步。单击文件所在的目录,然后选择文件的最新版本。单击工具并选择“在此处打开外壳”在shell中,键入:“rm{filename}”并按enter键。提交更改并重新同步。
根据文件。
git rm—缓存文件1.xt
当涉及到敏感数据时,最好不要说您删除了该文件,而是将其包含在最后一次已知提交中:
0.修改上次提交
git commit --amend -CHEAD
如果要从所有git历史记录中删除该文件,根据文档,应执行以下操作:
1.将其从本地历史记录中删除
git filter-branch --force --index-filter \ "git rm --cached --ignore-unmatch PATH-TO-YOUR-FILE-WITH-SENSITIVE-DATA" \ --prune-empty --tag-name-filter cat -- --all
# Replace PATH-TO-YOUR-FILE-WITH-SENSITIVE-DATA with the path to the file you want to remove, not just its filename
不要忘记将此文件包含在.gitignore中(如果它是一个您永远不想共享的文件(例如密码…):
echo "YOUR-FILE-WITH-SENSITIVE-DATA" >> .gitignore
git add .gitignore
git commit -m "Add YOUR-FILE-WITH-SENSITIVE-DATA to .gitignore"
3.如果需要从遥控器中移除
git push origin --force --all
4.如果您还需要将其从标签发布中删除:
git push origin --force --tags
2022年有效的新答案。
请勿使用:
git filter-branch
推送后,此命令可能不会更改远程回购。如果您在使用它之后进行克隆,您将看到没有任何变化,回购仍然具有较大的大小。此命令已过时。例如,如果使用中的步骤https://github.com/18F/C2/issues/439,这行不通。
你需要使用
git filter-repo
步骤:
(1) 在.git中查找最大的文件:
git rev-list --objects --all | grep -f <(git verify-pack -v .git/objects/pack/*.idx| sort -k 3 -n | cut -f 1 -d " " | tail -10)
(2) Strat过滤这些大型文件:
git filter-repo --path-glob '../../src/../..' --invert-paths --force
or
git filter-repo --path-glob '*.zip' --invert-paths --force
or
git filter-repo --path-glob '*.a' --invert-paths --force
或无论您在步骤1中找到什么。
(3)
git remote add origin git@github.com:.../...git
(4)
git push --all --force
git push --tags --force
完成!
推荐文章
- 如何配置Mac OS X术语,使git有颜色?
- Visual Studio Code: .git文件夹/文件隐藏
- “node_modules”文件夹应该包含在git存储库中吗
- 为什么git-rebase给了我合并冲突,而我所做的只是压缩提交?
- 当我试图推到原点时,为什么Git告诉我“没有这样的远程‘原点’”?
- 如何从远程分支中挑选?
- 如何查看一个分支中的哪些提交不在另一个分支中?
- 如何取消在github上的拉请求?
- HEAD和master的区别
- GIT克隆在windows中跨本地文件系统回购
- RPC失败;卷度传输已关闭,剩余未完成的读取数据
- 我应该在.gitignore文件中添加Django迁移文件吗?
- 错误:您对以下文件的本地更改将被签出覆盖
- Git rebase—即使所有合并冲突都已解决,仍然会继续报错
- 在Git中,我如何知道我的当前版本是什么?