Git won't let me rebase (untracked files would be overwritten). What should I do?
我只想编辑/修改较旧的Git提交的文本。
我运行了以下程序:
1 2 3 4 5 6 7 8 9 10 11 12 13 | $ git rebase -i a41a407d6f53328d49267e6a8429b9492f023629 error: The following untracked working tree files would be overwritten by checkout: admin/roles/allowassign.php admin/roles/allowoverride.php admin/roles/assign.html admin/roles/assign.php admin/roles/manage.html admin/roles/manage.php admin/roles/managetabs.php admin/roles/override.html admin/roles/override.php Aborting could not detach HEAD |
但是,
1 2 3 | $ git status On branch dev nothing to commit, working directory clean |
号
注意,管理员/角色是存储库的子模块:
1 2 | $ git submodule 77c5addc1b210256da9171e3b286ffa5addd2478 admin/roles (heads/dev) |
并列出忽略的文件:
1 2 3 4 5 6 7 8 9 10 | $ git status --ignored On branch duf-moodle-dev Ignored files: (use"git add -f <file>..." to include in what will be committed) blocks/moodleblock.class.php.bak filter/tex/mimetex.exe lib/smarty/COPYING.lib nothing to commit, working directory clean |
。
保存git stash没有结果:
1 2 | $ git stash save --include-untracked No local changes to save |
我在读,集成到Explorer Shell中,可以得到这样的结果。目前,Git扩展、GitGUI和SmartGit集成到上下文shell中。这可能导致问题?
我的建议是,问题的根源是使用子模块。我保留一些变化作为子模块。
有什么想法为什么rebase interactive会出错,以及如何修复它?
此外,甚至还有一个解决方案可以在不使用REBASE的情况下编辑/修改较旧的提交描述…
解决方案是从主repo(非主repo)中移除子模块。然后就可以重新平衡了。
我也遇到过类似的问题,但在我的例子中,这是由于在使用Windows时更改了文件名中的字母大小写(这似乎让Git感到困惑)。我通过使用虚拟Linux解决了这个问题,检查了那个分支并从那里执行
我自己花了很多时间在这个问题上,当我返回以下内容时:
1 2 3 4 | error: The following untracked working tree files would be overwritten by checkout: index.php ...... (too many lines) Please move or remove them before you can switch branches. |
一般来说,只需对文件进行rm然后签出。你也可以添加和储存它们。也许首先考虑强制结账,比如:
1 | git checkout --force master |
号
我也可以建议查看以下未跟踪的工作树文件,这些文件将被签出覆盖,这对我有很大帮助!