如何解决“git status”未显示的未分级更改

时间:2015-02-24 01:03:09

标签: git

考虑

$ git status
On branch chore/nbsp-fix-2
nothing to commit, working directory clean
$ git rebase -i master
Cannot rebase: You have unstaged changes.
Please commit or stash them.

如何计算阻止git进行变基的未分级更改?

一些背景:有人设法在名称中添加具有不间断空格(%A0)的文件。这导致了存储库的问题。文件显示为未跟踪,git认为存储库是脏的 - 类似的问题。

我用来纠正问题的技术是在进行这些更改之前创建一个新分支,并在这些更改之后挑选几个提交。不幸的是我现在处于这种情况。我可以想象有一些其他文件或其他遗留的问题阻止我继续前进。在错误的文件名之后挑选单个提交后,我现在处于这个位置。

我正在寻找解决此问题的建议。什么是rebase看到这种状态看不到?

1 个答案:

答案 0 :(得分:5)

原来git rebase/usr/libexec/git-core/git-rebase中的一个shell脚本,对于"有未分阶段的更改"在该函数中,在git-sh-setup中,dir只获得一次命中:

require_clean_work_tree () {
    git rev-parse --verify HEAD >/dev/null || exit 1
    git update-index -q --ignore-submodules --refresh
    err=0

    if ! git diff-files --quiet --ignore-submodules
    then
        echo >&2 "Cannot $1: You have unstaged changes."
        err=1
    fi

[ ... ]

并且rebase会调用它。所以,回答

  

什么是看到状态看不到的rebase?

您的问题,请尝试git diff-files