指向同一分支的两个Git分支名称?

问题描述:

认为我有我自己在这里一个奇怪的小问题...我还是很新的Git的,所以请裸跟我...指向同一分支的两个Git分支名称?

我创建了一个裸露的git仓库(“核心“),使用gitflow从预先存在的回购(”生产“)中克隆。我已经将裸露的repo再次克隆到非裸回购(“Staged”)中,然后在Staged中重新初始化git流(因为当我克隆裸回购时,gitflow没有出现?)?

但我刚刚注意到一些奇怪的东西。假设我处于staged repo,develop分支,并编辑一个文本文件(test.txt)。我运行git status,它告诉我,test.txt已被修改。真棒。

现在,我提交或合并,但我用git checkout master结帐高手,那么我再次运行git status和它说的test.txt已被修改!

如果我错了,请纠正我,但是我在开发分支上所做的任何更改都不应该影响主分支?这使我相信我的“主人”分支和“发展”分支实际上是同一个分支。

很明显,我在沿线的某个地方犯了一个非常愚蠢的错误,但是在哪里?不知道。这之前是否发生过这种情况?在这里诊断问题的任何指针?是否有任何愚蠢的错误,我可以让人想到任何人?有没有补救办法?

(我想指出的是,我做的,其实需要一个开发和master分支)

更新
我的开发分支提交修改后,结果是主事实上,它回到了正确的状态,开发现在处于更新状态。我开始觉得,也许这只是git的行为?

最后
查看这里的意见。事实证明,这已经被解决了。我很抱歉。

+0

可能的重复[修改后的git分支文件溢出到另一个分支](http://*.com/questions/246275/modified-files-in-a-git-branch-are-spilling-over -into-another-branch) – Gareth 2012-03-22 08:41:42

+0

是的!这正是我所说的。对不起,我曾经搜索了很久,但从未发现这个链接。这是重复的。我很抱歉。 – Jace 2012-03-22 08:46:47

+0

你确定你在开发分支吗?当你做'git checkout master'的时候,你确定它会切换到主吗?如果你运行,你会得到什么:'git branch' – ttux 2012-03-22 08:27:36

使用git,有三个重要方面:存储库(保存所有版本),登台目录和工作目录。登台目录是您提交之前进行更改的地方(或者在发出“git add”命令时文件发送到的地方)。工作目录是您在签出存储库中看到的一组文件。

分支只是指向仓库快照的指针。交换活动分支时,git会尝试保留分段和工作区域中的更改,并将工作目录中的所有文件更改为分支指向的快照。如果它不能安全地做到这一点,它会告诉你存储你的更改。我没有尝试过分区域冲突,因为我倾向于在交换分支之前提交分区区域的内容。

在您的特殊情况下,您修改了工作目录,然后交换了分支。由于修改没有被提交(或者被添加到暂存区),所以当你改变你的分支时,git只是将工作目录恢复到主分支,并且保留你未提交的更改。这允许您将更改提交到不同的分支(如果需要)。

正如链接问题所述,您的更改不是任何分支的“部分”,除非您提交它们。在那之前,他们只是工作副本的变化,因此这样的git会尝试并尽可能多地保留它们。