我在分行master
。我创建了一个新文件,例如Util.java
。这是未跟踪的。所以我做git add Util.java
并且文件在暂存区域准备好提交
然后我做git checkout -b temp
,所以我切换到temp
分支
在git status
上,我看到文件Util.java
已暂存并准备提交。我没想到这是因为我认为一旦切换分支,一切都很干净
我执行git commit Util.java
并且文件已提交,git log
图表显示Util.java
是temp
分支的一部分。即它遵循另一个“时间轴”而不是master
为什么这样的工作呢?因为我在不同的分支上创建了它,所以我期望不会提交Util.java
答案 0 :(得分:2)
当你创建一个git分支时,你没有创建一个新的分支。您实际上是在创建分支时创建分支。
澄清:有一个指向当前版本的指针,称为HEAD。您的头将指定您创建的任何新分支的基础。在这个特定的例子中,由于你在你的分支上有一个添加的文件,你的HEAD指向你当前的分支。创建新分支时,即使您的本地更改未反映在git版本控制中,也会将当前文件状态用作基础。
如果你真的想要制作一个干净的分支,你应该检查你对“干净”分支的定义。通常掌握,然后从那里分支。这应该消除你在当地分支机构所做的任何改变。
如果你想要一个良好的直观视觉方式来理解HEAD以及掌握和分支的工作原理我强烈推荐本教程:http://pcottle.github.io/learnGitBranching/
如果你想要你甚至可以分叉并做出新的例子,但只是通过它会教你很多关于git的事。
如果您想更深入地了解git add以及为什么它与git commit不同,我建议您阅读git add
找到的here