为什么一个分支中创建的文件存在于另一个分支中

时间:2017-03-23 15:53:42

标签: git

我希望能够切换到不同的分支,而不会在另一个分支中创建的文件存在于另一个分支中。

这是一个简单的例子。

$ git checkout -b feat1 && touch feat1 && git add feat1 && git commit -m "feat1" && git checkout master
$ git checkout -b feat2 && touch feat2 && git add feat2 && git commit -m "feat2" && git checkout master
$ git checkout -b feat3 && touch feat3 && git add feat3 && git commit -m "feat3" && git checkout master

我想在(Finder,Windows资源管理器)中打开repo目录并具有以下行为。

$ git checkout master

所需:没有文件

实际:没有文件

$ git checkout feat1

所需:仅存在feat1文件

实际:仅存在feat1文件

$ git checkout feat2

所需:仅存在feat2文件

实际:包含feat1和feat2

$ git checkout feat3

所需:仅存在feat3文件

实际:包含feat1,feat2和feat3

我做错了什么,我能做些什么来完成我想要的?

1 个答案:

答案 0 :(得分:1)

通常,如果您运行这些命令,那么每个分支将只包含一个文件。

你是否在git checkout master之后立即运行这些命令 - 即在没有提交的回购中?在这种情况下,每一行的最终feat2都会失败,因此feat1将从 feat3等分支,您会看到累积的文件集在每个分支。

在这种情况下,如果您结帐feat1并执行日志,您会看到来自feat2feat3的提交位于111111111 222222222 333333333 444444444 555555555 111111111 222222222 提交的历史记录中

那可能就是这样......