1

我今天打了这个:

% git checkout another_branch
error: The following untracked working tree files would be overwritten by checkout:
        __version__.txt
        alembic.ini
        alembic/README
        alembic/env.py
        alembic/script.py.mako
        folder1/file1
        folder2/file2
        ....
Please move or remove them before you can switch branches.
Aborting

好的,所以我将删除未跟踪的文件:

% git clean -f
Not removing alembic/
Not removing tools/maintenance/

但是,似乎并非所有未跟踪的文件都已删除:

% git checkout another_branch
error: The following untracked working tree files would be overwritten by checkout:
        alembic/README
        alembic/env.py
        alembic/script.py.mako
Please move or remove them before you can switch branches.
Aborting

奇怪的是,起初git checkout another_branchgit 知道它后来抱怨的那些特定的未跟踪文件 ( alembic/README, alembic/env.py, alembic/script.py.mako)。

那么为什么 git 没有删除它们呢?

4

2 回答 2

1

有两种未跟踪的文件:未跟踪的文件和忽略的文件。

当运行时git clean-f只是为了覆盖“安全”配置选项),git 只会删除未跟踪的文件,运行git clean -x时它将删除未跟踪和忽略的文件。

对于结帐问题,可能是由.gitignore两个分支中的不同文件触发的。

于 2015-11-05T10:59:14.723 回答
0

目录是否包含.git子目录或文件?

-f,--强制

如果 Git 配置变量 clean.requireForce 没有设置为 false,git clean 将拒绝删除文件或目录,除非给出 -f、-n 或 -i。除非给出第二个 -f,否则 Git 将拒绝删除带有 .git 子目录或文件的目录。这也会影响 git 子模块,其中 .git/modules/ 下已删除子模块的存储区域在 -f 给出两次之前不会被删除。

于 2015-11-05T10:57:06.157 回答