尝试重新设置基数以更正属性过滤器,但由于“未按阶段进行的更改”而无法进行

时间:2018-08-10 16:42:47

标签: git rebase gitattributes

问题

我的清洁过滤器无法应用(与Git无关的另一个问题),导致Git存储了“脏”文件。我修复了过滤器,但是现在我需要清理文件,然后再次存储它们。

发生了什么

我从another question of mine得知,如果在存在活动过滤器的情况下提交了没有过滤器的文件,那么无论我做什么,这些文件都将被视为已更改,因为哈希值将无法匹配。 git reset --hardgit stash的数量都无法解决此问题,也没有其他任何解决办法。

解决方案失败

我的第一个想法是做一个交互式的变基。但是,即使使用--force也不会允许我。使用force选项,它只是说无法完成,但是如果没有,Git会抱怨未进行的变更。

  

无法恢复基准:您已撤消更改

搜索不成功

我试图寻找一种方法来强制Git忽略未进行的变更,但所有导致的都是处理未进行的变更的常用方法(即resetstash)。

我正在尝试的事情

我目前正在尝试手动进行变基,但是由于某些原因,它无法按预期工作。现在提供更多细节还为时过早,还需要时间吃午餐。我现在要提一下,因为它出现在评论中。

据我所见,唯一剩下的东西。

我能想到的唯一解决方案是将当前工作目录放在一边,然后是git reset --hard last-good-commit。然后,我将文件移回并提交,但是我会丢失历史记录,而且我也不想这么做。

通过“丢失历史”,我的意思是导致“当前”的提交将丢失。我希望避免这种情况。

问题

在这种情况下如何强制变基?

1 个答案:

答案 0 :(得分:0)

答案是禁用过滤器,然后在我调整基准时手动应用过滤器。正如我在评论中提到的那样,存在一些障碍。这样做的障碍是导致空提交。解决方案是删除提交,因为它首先是自动提交,这也是未应用过滤器的原因。

其他信息

在〜/ .bashrc中,我为我编写的lib定义了一个加载路径,该路径由过滤器脚本使用。问题是自动git commit脚本绕过了该环境变量,导致清理脚本失败。解决方案是在脚本中显式指定lib的路径。