1

我是 git 新手,正在学习分支和合并。

当我执行以下操作时:

git checkout -b 测试

创建了一个新分支,我切换到该分支。当我:

vim 测试文件

并输入一些文本并保存,测试文件按预期创建。但是,当我通过以下命令更改到另一个分支时:

git结账大师

或者

git checkout 无关分支

我发现 testfile 也存在于这些具有相同内容的其他分支中。

这种行为与我对分支如何工作的理解不一致。一些互联网资源表明我在这里使用的命令是需要的。

有人可以告诉我我做错了什么或为什么这是理想的行为吗?

4

3 回答 3

3

testfile未跟踪,并且您的更改未提交。

因此,testfile 不是在所有分支上。它不在树枝上。Git 甚至不知道它的存在,因此它在切换分支时无法将其从工作目录中清除。这是有用的(如果出乎意料的)行为,因为您不想让 git 弄乱未跟踪的文件。

做:

git add testfile
git commit -m "Adding testfile to branch test"
git checkout master

你会看到 testfile 消失了。

于 2013-03-04T19:19:35.287 回答
3

看起来testfile不受版本控制。

尝试git status先运行以查看它是否testfileUntracked files.

例子:

git status
# On branch master
# Untracked files:
#   (use "git add <file>..." to include in what will be committed)
#
#   testfile
no changes added to commit (use "git add" and/or "git commit -a")

如果您在上面的示例中看到类似下面的testfile列表,则需要使用该命令untracked files将其添加到版本控制中。git add

git add testfile

最后,不要忘记使用提交更改git commit

于 2013-03-04T19:20:09.487 回答
2

这可能是因为该文件没有被跟踪。

尝试做:git add testfile将其添加到新分支。

于 2013-03-04T19:15:27.613 回答