意外地将dev数据库提交到Git

意外地将dev数据库提交到Git,git,Git,我不小心将development.sqlite3文件提交到Git,它似乎减慢了我的提交速度。我知道.gitignore,但是一旦我这样做了,它会将文件从我的存储库中删除吗?我关心的是减少提交和推送时间。否。.gitignore文件所做的只是告诉各种Git用户界面工具在批量提交更改时忽略该文件。您仍然可以手动将所需的任何单个文件放入Git的数据库,在其中添加entires不会从Git修订版数据库中删除任何内容。尝试以下操作: git filter-branch --tree-filter ´r

我不小心将development.sqlite3文件提交到Git,它似乎减慢了我的提交速度。我知道.gitignore,但是一旦我这样做了,它会将文件从我的存储库中删除吗?我关心的是减少提交和推送时间。

否。.gitignore文件所做的只是告诉各种Git用户界面工具在批量提交更改时忽略该文件。您仍然可以手动将所需的任何单个文件放入Git的数据库,在其中添加entires不会从Git修订版数据库中删除任何内容。

尝试以下操作:

  git filter-branch --tree-filter ´rm filename´ HEAD

没有必要对过滤器分支抱有幻想——这只是最近的一次提交。如果没有,只需删除文件(
git rm--cached
)并修改提交(
git commit--amend
)。
--cached
选项告诉git只删除索引(提交暂存区域)中的副本,并保持工作树中的版本不变

如果它在历史上更久远,您可以使用交互式rebase(
git rebase-i master
),选择
edit
bad commit,并像以前一样rm/amend。当然,一定要将它添加到gitignore中


请注意,如果您已经推送了此提交,则必须使用
push-f
将非快进推送,如果其他任何人已经推送了它,他们会感到恼火(请参阅“从上游重基恢复”git rebase手册页中的部分。

我相信您正在寻找您需要将其添加到.gitignore,但也需要将其从存储库中删除。quickfix的可能副本:备份该文件,使用原始名称创建新文件,将备份文件添加到.gitignore并提交,然后从.gitignore中删除备份文件并在那里添加db文件,最后是resto你是备份:)@rjh:不,这是一个完全不同的问题。这是关于追溯历史的。这是关于.gitigore(以及其他内容)。@bobDevil:这不是一回事,因为提交已经完成,所以它是
git-rm--cached
git-commit--amend
,而不仅仅是
rm--cached
。你还没有回答真正的问题,这就是如何摆脱文件。
过滤器分支
绝对是过火了。有问题的文件只是在一次提交中添加的,此后就没有修改过。我很好奇为什么这个答案被否决了——有人愿意告诉我如何改进吗?