我是git的新手,正在学习分支和合并。
当我执行以下操作时:
git checkout -b test
创建了一个新分支,我切换到该分支。 当我:
vim testfile
并输入一些文本并保存,testfile按预期创建。 但是,当我通过以下命令切换到另一个分支时:
git checkout master
或
git checkout unrelatedBranch
我发现测试文件也存在于具有相同内容的其他分支中。
这种行为与我对分支如何工作的理解不一致。一些互联网资源表明我在这里使用的命令是需要的。
有人可以告诉我我做错了什么或为什么这是理想的行为?
答案 0 :(得分:3)
testfile
未跟踪,您的更改未提交。
因此,testfile
在所有分支上都不是。它位于 no 分支上。 Git不知道它就在那里,所以当它切换分支时它无法将其清除出工作目录。这是有用的(如果是意外的)行为,因为你不喜欢让git搞乱未跟踪的文件。
执行:
git add testfile
git commit -m "Adding testfile to branch test"
git checkout master
你会看到testfile消失。
答案 1 :(得分:3)
看起来testfile
不受版本控制。
首先尝试运行git status
,看它是否在testfile
下列出Untracked 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
答案 2 :(得分:2)
可能是因为没有跟踪文件。
尝试执行:git add testfile
将其添加到新分支。