Git不让我重定基址(未被跟踪的文件将被覆盖),我该怎么办?

aor9mmx1  于 2022-12-10  发布在  Git
关注(0)|答案(5)|浏览(298)

我只想编辑/修改旧Git提交的文本。
我跑了下面:

$ 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

但是,git status不会列出任何未跟踪的文件:

$ git status
On branch dev
nothing to commit, working directory clean

请注意,admin/roles是存储库的子模块:

$ git submodule
 77c5addc1b210256da9171e3b286ffa5addd2478 admin/roles (heads/dev)

并列出忽略的文件:

$ 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存储没有结果:

$ git stash save --include-untracked
No local changes to save

我阅读,集成到Explorer Shell中,会有这样的结果。目前Git扩展,GIT GUI和SmartGIT都集成到上下文Shell中。这会导致问题吗?
我的建议是,问题的根源是子模块的使用。我保留了一些修改作为子模块。
有什么想法,为什么基地互动给是错误和如何修复它?
此外,甚至可以有一个解决方案来编辑/修改一个旧的提交描述,而不使用rebase...

8gsdolmq

8gsdolmq1#

解决方案是从主存储库中删除子模块(unsubmodule)。然后就可以进行重定基了。

ovfsdjhp

ovfsdjhp2#

我也遇到过类似的问题,但在我的例子中,这是由于在使用Windows时改变文件名中的字母大小写引起的(这似乎让git对它感到困惑)。我通过使用虚拟化的linux(可能是一个docker容器)解决了这个问题,检查出那个分支,并从那里执行rebase

kt06eoxx

kt06eoxx3#

对我来说,即使是未跟踪的文件,rebase也能很好地工作,直到我前一天做了一些不寻常的步骤(在不同的分支上重置头部等),突然在不同的分支(到master上)上的rebase停止工作。
这有助于:

git fetch --all
git reset --hard origin/master

贷方:https://ageekandhisblog.com/git-force-overwrite-of-untracked-working-tree-files/

fcipmucu

fcipmucu4#

我花了很多时间在这个问题上自己当我有以下返回:

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文件,然后 checkout 。你也可以,添加和隐藏它们。也许首先考虑强制 checkout ,如:

git checkout --force master

我可以建议也看看The following untracked working tree files would be overwritten by checkout,这对我帮助很大!

ss2ws0br

ss2ws0br5#

我在Drupal中重定基时遇到了这个问题,我必须删除它抱怨的文件,提交删除,重定基并通过跳过补丁来解决合并冲突,然后删除我刚刚提交的文件。

相关问题