Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Git 无法重写分支:您有未老化的更改_Git - Fatal编程技术网

Git 无法重写分支:您有未老化的更改

Git 无法重写分支:您有未老化的更改,git,Git,我想根据从git历史记录中删除一些文件/文件夹,但由于未老化的更改而失败。我不清楚在我之前所做的git add--all,commit&push中会有哪些未老化的更改。请注意,HEAD中不再存在要删除的文件夹somefolder/。它是在早期提交时移动的,但它的旧版本需要从回购中清除 ~$git add--all ~$git commit-m“试图修复‘无法重写分支:您有未老化的更改’” 论分行行长 您的分支机构是最新的“来源/主”。 没什么要承诺的,正在清理树 ~$git推送 一切都是最新的

我想根据从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