我希望能够切换到不同的分支,而不会在另一个分支中创建的文件存在于另一个分支中。
这是一个简单的例子。
$ 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
我做错了什么,我能做些什么来完成我想要的?
答案 0 :(得分:1)
通常,如果您运行这些命令,那么每个分支将只包含一个文件。
你是否在git checkout master
之后立即运行这些命令 - 即在没有提交的回购中?在这种情况下,每一行的最终feat2
都会失败,因此feat1
将从 feat3
等分支,您会看到累积的文件集在每个分支。
在这种情况下,如果您结帐feat1
并执行日志,您会看到来自feat2
和feat3
的提交位于111111111
222222222
333333333
444444444
555555555
111111111
222222222
提交的历史记录中
那可能就是这样......