2013-04-05 61 views
1

正如你所能理解的,我还在学习Git以及分支是如何工作的。不管怎么说:搞砸了分支,旧的主分支显示来自新分支的文件?

  1. 我工作的地方master分支。
  2. 我创建并切换到一个新的fcwdetection分支用于添加一些代码,使用我的IDE,意思是不通过命令行。
  3. IDE要求我将新创建的文件(比如A.php)添加到存储库。我已添加并修改了B.php(已添加)。

结果是,master分支(I切换回它)具有现在A.phpB.php具有相同的编辑作为B.phpfcwdetection分支。

这怎么可能?这是来自IDE的错误还是我完全误解了分支的工作方式?

+0

没有你犯了两个文件,而在'fcwdetection'科? – Atropo 2013-04-05 15:56:55

+0

@Atropo我不这么认为,IDE只是要求我“追加”它来跟踪。我已经为'A.php'选择了“是”并像往常一样编辑了B.php。 – gremo 2013-04-05 15:57:53

回答

1

您的工作流看起来正确。看起来像在IDE中的错误。如果您只想在fcwdetection分支中拥有修改后的文件,则应在该分支中提交它们。 在命令行中,你做这样的事情:

创建分支:

git checkout -b fcwdetection 

编辑A.php创造B.php 添加的所有文件,包括新B.phpgit

git add -A . 

承诺他们在fcwdetection

git commit -m 'Commit message' 

此时如果您稍后再回来检查master看到旧版本的文件这一点:

git checkout master 

如果你把看到的A.php的修改版本,并B.php你应该检查他们的状态,是他们已经添加到index?我这么说beause git不要让你从一个分支切换到另一个修改的非COMMITED文件,在命令行中,你得到这个错误:

error: Your local changes to the following files would be overwritten by checkout: 
[some files] 
Please, commit your changes or stash them before you can switch branches. 

Aborting 
+0

将文件提交到'fcwdetection'并切换回'master'后,我看到'B.php'和'A.php'的正确版本被删除。那很好。但是为什么当我在'master'上工作时,IDE向'fcwdetection'显示未提交的文件?!它很混乱... – gremo 2013-04-05 16:14:45

+0

你在用什么IDE?如果您在文件中进行了本地更改,IDE应阻止您切换到另一个分支。 – Atropo 2013-04-05 16:17:58

+0

PHPStorm新版本6.下面是发生了什么:如果我编辑分支A中的文件(不提交任何内容),当我切换回分支B时,可以看到编辑。没有警告。 – gremo 2013-04-05 16:22:43