gpt4 book ai didi

git - 无法重写分支 : You have unstaged changes

转载 作者:行者123 更新时间:2023-12-03 19:15:10 25 4
gpt4 key购买 nike

我想根据 git documentation 从 git 历史记录中删除一些文件/文件夹,但由于 unstaged changes 而失败.我不清楚可能会像我一样进行哪些未分阶段的更改 git add --all ,提交和推送之前。注意要删除的文件夹somefolder/不再存在于 HEAD 中。它在较早的提交中被移动,但它的旧版本需要从 repo 中清除。

~$ git add --all
~$ git commit -m "trying to fix 'Cannot rewrite branches: You have unstaged changes'"
On branch master
Your branch is up to date with 'origin/master'.

nothing to commit, working tree clean
~$ git push
Everything up-to-date
~$ git status
On branch master
Your branch is up to date with 'origin/master'.

nothing to commit, working tree clean
~$ git filter-branch --force --index-filter "git rm --cached --ignore-unmatch somefolder/" --prune-empty --tag-name-filter cat -- --all
Cannot rewrite branches: You have unstaged changes.
~$

我该如何解决这个问题,以便我可以成功运行最后一个命令?

最佳答案

首先,确保使用最新的 Git (2.26),如 there was a bug in older Git versions关于 git filter-branch .

其次,您可能想要 clone your repo as a bare repository, and do the filtering there .这将防止任何未暂存的更改,因为裸存储库没有工作树。

但是第三,不要使用 obsolete BFG or git filter-branch 为了这。
使用新工具 git filter-repo (直接在您的常规本地存储库中,尽管在这些过滤之前备份总是一个好主意)

使用 path filtering :

git filter-repo --path somefolder/ --invert-paths

这将删除 somefolder/来自 Git 存储库历史记录。

关于git - 无法重写分支 : You have unstaged changes,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61025680/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com