我正在使用Xcode的集成源代码控制和Git,我遇到了以下问题:
我有一个完美工作的主分支,我想开发两个新功能。所以我创建了两个新分支,在每个分支处添加一个新文件。
现在,当我切换回主分支或其他分支时,在提交更改并且没有合并(我不想合并)之后,来自所有分支的文件出现在项目导航器中(那些不属于当前分支的是红色)并阻止我的代码编译,因为编译器抱怨这些文件不存在。
我的主人至少应该编译,不管我在其他分支中做了什么?
我在这里错过了一些小事吗?
答案 0 :(得分:1)
未跟踪的文件和未分级的更改不属于任何分支。他们只住在你工作的树上。切换分支时,这些文件/更改保持不变。如果您希望它们仅存在于某个分支中,则必须添加并提交所有这些分支。
这应该有助于理解:
$ git status
On branch master
nothing to commit, working directory clean
$ >>file echo 'added line'
$ touch new_file
$ git status
On branch master
Changes not staged for commit:
modified: file
Untracked files:
new_file
$ git checkout -b new_branch
M file
Switch to a new branch 'new_branch'
$ git status
On branch new_branch
Changes not staged for commit:
modified: file
Untracked files:
new_file
因此,如您所见,切换分支时会进行非分段更改(这是设计使然)。当签出另一个分支时,Git会告诉您哪些文件包含更改(以M
odified开头的行)。这也适用于未跟踪的文件(Git无法删除它们,因为您可能需要它们),但在检出分支时它们的名称不会明确输出。
要在切换分支时让Git删除文件,您必须先将它们添加(并提交!)到分支。