Git 无法重写分支:您有未老化的更改
我想根据从git历史记录中删除一些文件/文件夹,但由于Git 无法重写分支:您有未老化的更改,git,Git,我想根据从git历史记录中删除一些文件/文件夹,但由于未老化的更改而失败。我不清楚在我之前所做的git add--all,commit&push中会有哪些未老化的更改。请注意,HEAD中不再存在要删除的文件夹somefolder/。它是在早期提交时移动的,但它的旧版本需要从回购中清除 ~$git add--all ~$git commit-m“试图修复‘无法重写分支:您有未老化的更改’” 论分行行长 您的分支机构是最新的“来源/主”。 没什么要承诺的,正在清理树 ~$git推送 一切都是最新的
未老化的更改而失败。我不清楚在我之前所做的git add--all
,commit&push中会有哪些未老化的更改。请注意,HEAD中不再存在要删除的文件夹somefolder/
。它是在早期提交时移动的,但它的旧版本需要从回购中清除
~$git add--all
~$git commit-m“试图修复‘无法重写分支:您有未老化的更改’”
论分行行长
您的分支机构是最新的“来源/主”。
没什么要承诺的,正在清理树
~$git推送
一切都是最新的
~$git状态
论分行行长
您的分支机构是最新的“来源/主”。
没什么要承诺的,正在清理树
~$git filter分支--force--index filter“git rm--cached--ignore unmatch somefolder/”--prune empty--tag name filter cat--all
无法重写分支:您有未老化的更改。
~$
如何修复此问题,以便成功运行最后一个命令?首先,请确保使用最新的Git(2.26),例如 第二,你可能想。这将防止任何未老化的更改,因为裸存储库没有工作树 但第三,不要使用此选项。
使用新工具(直接在您的常规本地存储库中,尽管在进行此类筛选之前备份始终是一个好主意) 使用:
这将从Git存储库历史记录中删除
somefolder/
。Git status的输出是什么??感谢您的全面回答。我遇到了一些问题,比如git filter repo
要求在filter
之前使用破折号,随后的推送被拒绝,因为遥控器包含您所做的工作。我可以用--force
标志来解决这个问题。然而,我最终设法从git历史记录中删除了那个特定的文件夹。我还遇到了致命的问题:在将更改拉到我原来的本地回购时拒绝合并不相关的历史记录。我也会解决这个问题。。。。
git filter-repo --path somefolder/ --invert-paths