我最近在功能分支中运行了命令
git filter-branch --index-filter "git rm -rf --cached --ignore-unmatch utils.js"
,目的是从我的 git 存储库/历史记录中删除一个文件(我在本地执行此操作并计划推送到 github)。但是,一旦命令输出Rewrite <git hash> (123/1122) (102 seconds passed, remaining 802 predicted)
,我了解到git filter-branch
可能会在我不知情的情况下更改文件,因此我用ctrl+c取消了它。 VSCode 中没有记录要提交的文件。然后我切换到主分支并运行git fetch --all
和git reset --hard origin/master
。我在本地最新提交的 master 和 github 上的 master 是一样的,而 vscode 显示没有要提交的文件(我的意思是没有文件被更改)。但是,https://git-scm.com/docs/git-filter-branch 上的文档指出“git filter-branch 有很多陷阱,可能会对预期的历史重写产生不明显的破坏” - 是否有人能够确认我对 git fetch --all
和 git reset --hard origin/master
采取的步骤足以确保我的文件正常,或者我需要做其他事情来确保 git filter-branch
命令没有'不更改我的存储库中的任何其他文件吗?
你应该在运行这样一个危险的命令之前复制你的工作树文件夹,文档告诉你这样做,但你似乎没有。因此,您当地回购的状态值得怀疑。最佳行动方案:放弃你的项目并制作一个新的克隆。