尝试变基以更正属性过滤器,但由于 "unstaged changes" 而不能
Trying to rebase to correct an attribute filter, but can't due to "unstaged changes"
问题
我的清理过滤器未能应用(与 Git 无关的单独问题)导致 Git 存储 "dirty" 文件。我修复了过滤器,但现在我需要清理文件,然后重新存储它们。
发生了什么
我从 了解到,如果文件在没有过滤器的情况下提交,而存在一个活动过滤器,那么无论我做什么,这些文件都将被视为已更改,因为哈希将无法匹配。 git reset --hard
或 git stash
的数量都无法解决此问题,也无法解决其他任何问题。
失败的解决方案
我的第一个想法是做一个交互式的变基。然而,即使 --force
它也不会让我。使用 force 选项,它只是说它不能完成,但没有它 Git 抱怨未暂存的更改。
cannot rebase: you have unstaged changes
没有结果的搜索
我试图寻找一种方法来强制 Git 忽略未暂存的更改,但所有导致的都是处理未暂存更改的常用方法(即 reset
和 stash
) .
我正在尝试什么
我目前正在尝试手动执行变基,但由于某种原因它没有按预期工作。现在提供更多细节还为时过早,现在是吃午饭的时间了。我现在要提到这个,因为它出现在评论中。
只剩下我能看到的了。
我能想到的唯一解决办法是将当前工作目录放在一边,然后git reset --hard last-good-commit
。然后我将文件移回并提交,但是我会丢失历史记录,我不想这样。
"losing history" 我的意思是导致 "present" 的提交将丢失。我希望避免这种情况。
问题
在这种情况下如何强制变基?
答案是禁用过滤器,然后在我变基时手动应用过滤器。正如我在评论中提到的,有一点障碍。那个障碍是这样做会导致空提交。解决方案是删除提交,因为它首先是自动提交,这也是未应用过滤器的原因。
更多信息
在 ~/.bashrc 中,我为我编写的库定义了一个加载路径,过滤器脚本使用该路径。问题是自动 git 提交脚本绕过了导致清理脚本失败的环境变量。解决方案是在脚本中明确指定 lib 的路径。
问题
我的清理过滤器未能应用(与 Git 无关的单独问题)导致 Git 存储 "dirty" 文件。我修复了过滤器,但现在我需要清理文件,然后重新存储它们。
发生了什么
我从 git reset --hard
或 git stash
的数量都无法解决此问题,也无法解决其他任何问题。
失败的解决方案
我的第一个想法是做一个交互式的变基。然而,即使 --force
它也不会让我。使用 force 选项,它只是说它不能完成,但没有它 Git 抱怨未暂存的更改。
cannot rebase: you have unstaged changes
没有结果的搜索
我试图寻找一种方法来强制 Git 忽略未暂存的更改,但所有导致的都是处理未暂存更改的常用方法(即 reset
和 stash
) .
我正在尝试什么
我目前正在尝试手动执行变基,但由于某种原因它没有按预期工作。现在提供更多细节还为时过早,现在是吃午饭的时间了。我现在要提到这个,因为它出现在评论中。
只剩下我能看到的了。
我能想到的唯一解决办法是将当前工作目录放在一边,然后git reset --hard last-good-commit
。然后我将文件移回并提交,但是我会丢失历史记录,我不想这样。
"losing history" 我的意思是导致 "present" 的提交将丢失。我希望避免这种情况。
问题
在这种情况下如何强制变基?
答案是禁用过滤器,然后在我变基时手动应用过滤器。正如我在评论中提到的,有一点障碍。那个障碍是这样做会导致空提交。解决方案是删除提交,因为它首先是自动提交,这也是未应用过滤器的原因。
更多信息
在 ~/.bashrc 中,我为我编写的库定义了一个加载路径,过滤器脚本使用该路径。问题是自动 git 提交脚本绕过了导致清理脚本失败的环境变量。解决方案是在脚本中明确指定 lib 的路径。