对于这个分支故事,请注意终端在执行pwd
命令时显示完全相同的路径名。
我刚学会了如何用git进行分支(master分支只跟踪了一个自述文件)。所以我创建了另一个分支,并且我没有跟踪我的自述文件并创建了一个新文件,我称之为readme_dagboek(分支的名称)。令我惊讶的是,当我从一个分支机构检查到另一个分支时,发现者也显示了这一点。
所以在分支dagboek我抛弃了一个我需要适应的旧项目(只能访问1个私人仓库)。我的想法是,我再也不会触摸这个分支,我只需要从中复制/粘贴代码。
发生的奇怪事情是当我检查到主分支时,我在Finder中看到了dagboek分支的2个文件。这些是" Classes"文件夹和" Dagboek(某事).xcodeproj" (见第一张图)。这些文件属于Dagboek分支,而不属于主分支。
奇怪的是,当我执行命令git ls-files
时,它并不表示正在跟踪这两个文件。
所以我删除了文件(rm <filename>
),它们现在不再出现在主分支中,仍然出现在dagboek分支中,这就是我想要的(见图2),但是我仍然在想,这里发生了什么?当我在主分支机构时,Finder如何首先显示它们?如果那时我会在dagboek分支中忙碌,那么图像2的所有文件也应该在那里,但它们不是。
答案 0 :(得分:2)
任何分支中不存在未经跟踪的文件(您从未add
编辑过的文件)。它们在您的工作副本中,并且切换分支通常不会对它们产生影响。对于未提交的更改也是如此。
如果您希望某个分支中的文件不存在于另一个分支中,则您必须将它们提交到该分支。
例如:
# Create a new branch and check it out
git checkout -b dagboek
# Edit your new file
$EDITOR readme-dagboek.txt
# Commit this file to the branch
git add readme-dagboek.txt
git commit
现在,将分支机构切换回master
不应显示readme-dagboek.txt
。
这是设计的。想象一下,你正在研究一些东西,你意识到它实际上应该被提交给另一个分支。您不希望切换到其他分支以删除更改。相反,您切换到要提交和提交的分支。