为什么当我在 git 中切换分支时我的文件没有改变?

为什么当我在 git 中切换分支时我的文件没有改变?

我在 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

相关内容