我不小心在git commit中添加了一个大文件,现在我正尝试再次删除它。
从https://help.github.com/articles/remove-sensitive-data/中,我受到启发尝试了这个方法
git filter-branch --force --index-filter \'git rm --cached --ignore-unmatch .ntvs_analysis.dat' \--prune-empty --tag-name-filter cat -- --all
但我最终
>_
我希望输入$。如果输入'
我得到这个错误
fatal: ambiguous argument 'rm': unknown revision or path not in the working tree
.
Use '--' to separate paths from revisions, like this:
'git <command> [<revision>...] -- [<file>...]'
之后我做了一些我想保留的提交。我如何从我的提交中删除大文件,这样我就可以上传到github了。
4条答案
按热度按时间4uqofj5v1#
为了不丢失您添加的文件,您可以按照以下步骤操作:
git reset --soft HEAD~1
-这会将分支重置为上一个快照,同时保留所有暂存文件git reset HEAD file_to_remove
-这将从暂存中删除test.txtgit commit -a -m "commit message"
-重新提交暂存的更改,而不删除文件有一点需要注意--以上假设你的提交没有被推送到公共仓库(在这种情况下不推荐使用git reset)
jvlzgdj92#
问题是您转义了命令开头的单引号,以便
--index-filter
选项接收到单个参数'git
。>_
是在您结束该行而没有结束预期用作右引号的 unescaped 单引号时的续行提示符。出现此错误是由于git
误解了生成的参数序列。正确的命令是(删除了第一个单引号和
--prune-empty
选项之前的反斜杠。我完全删除了--tag-filter
,因为我不确定它是如何需要的,尽管--tag-filter cat -- --all
几乎肯定是不正确的。)oalqel3c3#
1.使用恢复到上一个git提交
1.只需删除您的文件
1.然后再次提交回更改
wqsoz72f4#
1.恢复到上次提交
1.从暂存文件列表中删除文件
1.添加新提交