2013-04-05 87 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