Git不会让我反驳(未跟踪的文件会被覆盖).我该怎么办?

klo*_*lor 9 git commit rebase

我只想编辑/修改较旧的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       
Run Code Online (Sandbox Code Playgroud)

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

$ git status
On branch dev
nothing to commit, working directory clean
Run Code Online (Sandbox Code Playgroud)

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

$ git submodule
 77c5addc1b210256da9171e3b286ffa5addd2478 admin/roles (heads/dev)
Run Code Online (Sandbox Code Playgroud)

列出被忽略的文件:

$ 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
Run Code Online (Sandbox Code Playgroud)

保存GIT存储没有结果:

$ git stash save --include-untracked
No local changes to save
Run Code Online (Sandbox Code Playgroud)

我正在阅读,集成到Explorer Shell中,可以有这样的结果.目前,Git Extensions,GIT GUI和SmartGIT已集成到上下文shell中.这可能会引起问题?

我的建议是,问题的根源是子模块的使用.我作为子模块保留了一些变化.

任何关于rebase交互的原因都是错误以及如何解决它?

另外,如果没有使用rebase,编辑/修改旧的提交描述就可以了.

klo*_*lor 5

解决方案是从主 repo (unsubmodule) 中删除子模块。然后可以做rebase。

  • 请注意,这可以通过当前版本的 git 上的 `git submodule deinit &lt;your_submodule&gt;` 来完成。变基后,使用`git submodule init; git submodule update` 带回子模块。 (4认同)