谁能帮我理解我在 git 中发现的这个怪癖?
以下是如何重现此怪癖:
$ mkdir git-test && cd git-test
$ git init
Initialized empty Git repository in /tmp/git-test/.git/
$ echo hello > world
$ git add world
$ git commit -m'first commit'
[master (root-commit) 5f68103] first commit
1 file changed, 1 insertion(+)
create mode 100644 world
酷,到目前为止还好;现在让我们分支:
$ git checkout -b a_branch
$ mkdir a_dir
$ echo foo > a_dir/bar
$ git add a_dir/bar
$ git commit -m message
[a_branch (root-commit) 2fbef71] message
1 file changed, 1 insertion(+)
create mode 100644 a_dir/bar
好的,怪癖来了!
$ cd a_dir
$ pwd
/tmp/git-test/a_dir
$ git checkout master
Switched to branch 'master'
$ pwd
/tmp/git-test/a_dir
哇!?此分支中不存在此路径!
$ ls
total 0
甚至ls
似乎工作...
$ cd ..
$ ls
world
目录“a_dir”现在神奇地消失了!
这怎么可能?