这个问题是关于重写 git 历史的。六个月前,我决定对存储库的现有子文件夹进行更改,现在我改变了主意,想要撤消该操作以及所有相关的历史记录。请注意,我希望该子文件夹之外的更改应保持原样。
因此,具体来说,我正在尝试从某个日期开始删除在 repo 的一个子文件夹中所做的所有更改的历史记录。
我希望的最终结果应该看起来像在该日期之后没有在子文件夹中进行过编辑/添加/删除。
查看Remove file from git repository (history)的答案,以及http://dalibornasevic.com/posts/2-permanently-remove-files-and-folders-from-a-git-repository,最接近的我'有是这样的:
git filter-branch --index-filter 'git rm -r -f --cached --ignore-unmatch TheFolderToRemove' --prune-empty --all xxxxxx..HEAD
git reset --hard
git remote rm origin
rm -r .git/refs/original/
git reflog expire --expire=now --all
git gc --aggressive
git prune
这将删除子文件夹中的所有文件。
有人可以告诉我如何修改它,以便它只删除文件夹中应用的更改吗?非常感谢