git checkout和文件目录行为

时间:2016-01-11 23:53:07

标签: git git-checkout

我一直在探索git,我注意到当我在终端中检出不同的分支时,我注意到finder中反映的变化。所以,如果branchA有file1且branchB有file1和file2,我运行git checkout branchA,我查找finder,我在git目录中看到了file1。但是如果我运行git checkout branchB并查看finder,我会看到file1,file2。太好了。似乎git根据签出的分支修改当前目录。

但是,我最近克隆了一个远程回购。让我们说master拥有file1就是这样。我是主人。我创建newBranch并结帐。我跑echo "test" > test.txt。现在,当我结帐时,在finder中显示分支test.txt。但是我在newBranch中签出时添加了text.txt,而不是master。

我在finder目录中看到这个新的text.txt文件时感到不安,即使我结帐回主人也是如此。克隆后它不应该恢复到初始状态。什么时候只包含file1?当我结帐到我实际添加它的新分支时,我会看到file1 + test.txt。我怎么能理解这种行为?

2 个答案:

答案 0 :(得分:1)

text.txt从未使用git add text.txtgit add .添加到git的跟踪中。因此,git会忽略此文件并保持原样,只更改正在跟踪的文件。

答案 1 :(得分:1)

  

现在当我结帐时,在finder中显示分支test.txt。但是我在newBranch中检查时添加了text.txt,而不是master。

您的工作目录和临时区域是"移动"和你一起去所有的分支机构。它们与任何分支无关。

每当您更改分支时,只会更改HEAD。 workdir + index保持不变。这就是你看到文件的原因。

enter image description here