偶然我在我的git提交中添加了一个大文件,我现在试图再次删除它。
来自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。
答案 0 :(得分:1)
使用
恢复到之前的git提交# Moves pointer back to previous HEAD
git reset --soft HEAD@{1}
只需删除您的文件
即可rm <filename>
然后再次提交您的更改
git commit -a
答案 1 :(得分:1)
为了不丢失您添加的文件,您可以按照以下步骤操作:
git reset --soft HEAD~1
- 这会将分支重置为上一个快照,同时保留所有文件暂存git reset HEAD file_to_remove
- 这将从暂存git commit -a -m "commit message"
- 重新提交暂存的更改,而不删除文件只是一个重要的注意事项 - 上面假设您的提交未被推送到公共存储库(在这种情况下不建议使用git reset)
答案 2 :(得分:1)
问题是你转义了单引号以启动命令,因此--index-filter
选项收到了单个参数'git
。当您结束该行而不关闭您打算作为结束报价的未转义单引号时,>_
是继续提示。由于git
误解了所产生的参数序列而发生错误。正确的命令就是
git filter-branch --force --index-filter 'git rm --cached --ignore-unmatch .ntvs_analysis.dat' --prune-empty
(删除了第一个单引号和--prune-empty
选项之前的反斜杠。我完全删除了--tag-filter
,因为我不确定需要什么,尽管--tag-filter cat -- --all
是几乎肯定不正确。)