我一直在探索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。我怎么能理解这种行为?
答案 0 :(得分:1)
text.txt从未使用git add text.txt
或git add .
添加到git的跟踪中。因此,git会忽略此文件并保持原样,只更改正在跟踪的文件。
答案 1 :(得分:1)
现在当我结帐时,在finder中显示分支test.txt。但是我在newBranch中检查时添加了text.txt,而不是master。
您的工作目录和临时区域是"移动"和你一起去所有的分支机构。它们与任何分支无关。
每当您更改分支时,只会更改HEAD。 workdir + index保持不变。这就是你看到文件的原因。