Git新文件出现在所有分支中

6

我以为在一个分支上创建的文件直到合并或变基该分支后才会出现在其他分支中?

例子:

我有两个分支:

  1. 主分支
  2. 新联系人页面分支

我切换到新联系人页面分支。

$ git checkout new_contact_page

然后我创建一个新文件。
$ vi contact_page.html

没有执行任何 Git 命令,我切换回我的主分支

$ git checkout master

然后我发现这个contact_page.html文件也在我的主分支中。

$ ls   (contact_page.html shows up in the list!)

文件不应该只存在于“new_contact_page”分支中吗?
2个回答

11

Git不会触及那些实际上不在你的代码库中的文件。(未跟踪的文件)

你需要先使用git addgit commit命令把文件加入到一个分支中。


1
如果我在 new_contact_page 中使用 git addgit commit 命令,那么该文件将不会存在于 master 分支中,对吗? - Don P
1
啊,答案是肯定的。这样很多事情都变得更有意义了。谢谢Slaks! - Don P
5
更精确地说,在你执行该操作之前,它不会存在于任何分支中 - 它只是留存在本地文件系统中的残留物。 - SLaks

1

这里重要的是理解索引(或暂存区)的作用。

只要您不将文件加入暂存区(git add),它们就会保持“未跟踪”(或“私有”)状态,并且不会被“git checkout”修改。

这与“未暂存”不同,后者指的是具有本地修改但尚未添加到索引中的已跟踪文件(先前在本地Git仓库中提交过)。

您可以在“You could have invented git (and maybe you already have!)”中了解更多信息。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接