我的清洁过滤器无法应用(与Git无关的另一个问题),导致Git存储了“脏”文件。我修复了过滤器,但是现在我需要清理文件,然后再次存储它们。
我从another question of mine得知,如果在存在活动过滤器的情况下提交了没有过滤器的文件,那么无论我做什么,这些文件都将被视为已更改,因为哈希值将无法匹配。 git reset --hard
或git stash
的数量都无法解决此问题,也没有其他任何解决办法。
我的第一个想法是做一个交互式的变基。但是,即使使用--force
也不会允许我。使用force选项,它只是说无法完成,但是如果没有,Git会抱怨未进行的变更。
无法恢复基准:您已撤消更改
我试图寻找一种方法来强制Git忽略未进行的变更,但所有导致的都是处理未进行的变更的常用方法(即reset
和stash
)。
我目前正在尝试手动进行变基,但是由于某些原因,它无法按预期工作。现在提供更多细节还为时过早,还需要时间吃午餐。我现在要提一下,因为它出现在评论中。
我能想到的唯一解决方案是将当前工作目录放在一边,然后是git reset --hard last-good-commit
。然后,我将文件移回并提交,但是我会丢失历史记录,而且我也不想这么做。
通过“丢失历史”,我的意思是导致“当前”的提交将丢失。我希望避免这种情况。
在这种情况下如何强制变基?
答案 0 :(得分:0)
答案是禁用过滤器,然后在我调整基准时手动应用过滤器。正如我在评论中提到的那样,存在一些障碍。这样做的障碍是导致空提交。解决方案是删除提交,因为它首先是自动提交,这也是未应用过滤器的原因。
在〜/ .bashrc中,我为我编写的lib定义了一个加载路径,该路径由过滤器脚本使用。问题是自动git commit脚本绕过了该环境变量,导致清理脚本失败。解决方案是在脚本中显式指定lib的路径。