我在 master 分支中创建了一个文件 new_file.dat,然后切换到名为“branch”的新现有分支。切换后,我看到该文件仍在那里:
$ git checkout master
Switched to branch 'master'
$ emacs new_file.dat
$ cat new_file.dat
Hello
$ git checkout branch
Switched to branch 'branch'
$ cat new_file.dat
Hello
我不明白这种行为:git 不是应该在切换后用“分支”文件替换所有文件吗?为什么 new_file.dat 还在那里?
答案1
切换分支时,未被 Git 跟踪的文件将保持不变。由于 Git 不知道new_file.dat
,因此它不会直接删除它。
如果你这样做了:
git checkout master
echo "Hello" > new_file.dat
git add new_file.dat
git checkout branch
该文件new_file.dat
仍将被暂存并存在;branch
如果您愿意,可以将其提交到分支。
如果你这样做:
git checkout master
echo "Hello" > new_file.dat
git add new_file.dat
git commit -m "add new_file.dat"
git checkout branch
该文件将会消失,因为它现在由 Git 跟踪,而不是branch
。
如果您想找出 Git 当前跟踪的文件,请使用git ls-files
。