仅从 git 提交中删除文件
Posted
技术标签:
【中文标题】仅从 git 提交中删除文件【英文标题】:Remove file from git commits only 【发布时间】:2021-12-31 18:41:39 【问题描述】:我的 git 提交中有一个名为 test.config.php 的文件,我想从我的 git 存储库中删除该文件,所以我使用了
git filter-branch --index-filter "git rm -rf --cached --ignore-unmatch path_to_file" HEAD" HEAD
但它从项目和 git 历史记录中删除了文件,我设法取回了文件,但我只需要从 git 提交中删除文件,而不是从所有项目中删除文件
【问题讨论】:
你想从提交中删除文件而不是项目是什么意思?您可以在其他地方复制该文件,将其从提交中删除,然后将其复制回项目文件夹吗? 提交是项目和历史。如果文件在提交中,则它在 Git 和历史记录中。如果不是,那就不是。仅此而已。 我会试一试的,伙计们 【参考方案1】:您可以使用git reset --soft HEAD^
这将重置提交,但会将您的更改保留在您的工作和索引树中,这意味着您会发现所有更改都已暂存并准备好提交,还需要注意 HEAD^ 是HEAD^1 的快捷方式,这意味着您将回到当前提交之前的提交状态。
您还可以使用git reset --mixed HEAD^
,它将从日志中删除提交,并将您的更改从索引树中删除,这意味着您只会在工作树中找到您的更改,而不是暂存。
【讨论】:
以上是关于仅从 git 提交中删除文件的主要内容,如果未能解决你的问题,请参考以下文章