`git rebase -i` 错误:以下未跟踪的工作树文件将被结帐覆盖:

Posted

技术标签:

【中文标题】`git rebase -i` 错误:以下未跟踪的工作树文件将被结帐覆盖:【英文标题】:`git rebase -i` error: The following untracked working tree files would be overwritten by checkout: 【发布时间】:2021-12-02 21:05:39 【问题描述】:

运行git rebase -i 时出现错误:

$ git rebase -i 01a182d66b14ef8f32eb09614fe2c7144044a537^
error: The following untracked working tree files would be overwritten by checkout:
        Annotation/README.MD
Please move or remove them before you switch branches.
Aborting
error: could not detach HEAD

我看不出问题出在哪里,因为当我运行 git status 时,它告诉我没有未分级的更改:

git status
On branch dataset
nothing to commit, working tree clean

运行git stash 也无济于事:

$ git stash
No local changes to save

【问题讨论】:

【参考方案1】:

最后的错误消息(关于无法分离HEAD)应该在这里忽略;这是早期错误的产物。

虽然前面的错误非常简单:

error: The following untracked working tree files would be overwritten by checkout:
       Annotation/README.MD

这意味着现在,您有一个名为Annotation/README.md 的未跟踪工作树文件。 (如果您不确定“未跟踪文件”和/或“工作树”是什么意思,请阅读my answer here。由于git status 没有抱怨它,它似乎既未被跟踪又被忽略。)

同时,git rebase 首先要检查的提交,以便复制其他一些提交,其中有一个名为Annotation/README.MD 的文件。要签出该提交,Git 必须签出该文件。签出该文件将破坏当前位于工作树中的名为 Annotation/README.MD 的文件。

为避免丢失工作树文件 Annotation/README.MD 的内容,Git 不会立即签出该提交。如果您通过添加和提交文件来保存文件,或者完全删除文件或将其移开,这将解决问题:

Please move or remove [this file] before you [check out the target commit]

由于git rebase 需要在开始提交复制过程之前检查目标提交,所以git rebase 需要您执行git checkout 需要您执行的操作。

【讨论】:

以上是关于`git rebase -i` 错误:以下未跟踪的工作树文件将被结帐覆盖:的主要内容,如果未能解决你的问题,请参考以下文章

git rebase与git merge的区别

Git:没有添加到提交但存在未跟踪的文件

git commit -a -m 给出文件未被跟踪的错误

git rebase abort 后的 git reset --hard 错误:警告:ref HEAD 的日志在 DD/MM/YYY TTTT 上意外结束

Git rebase - 在分叉点模式下提交选择

Git:仅列出“未跟踪”文件(还有自定义命令)