2011-07-10 95 views
2

可能重複:
git: Switch branch and ignore any changes without committing.
Git branches behaving strangely在git中切換分支 - 何時會得到「您有本地更改無法切換分支。」?

我知道,一般的建議是在git的開關支路之前有一個乾淨的狀態。 (存儲或公園提交)。我試圖瞭解什麼時候我會得到「你有本地更改不能切換分支機構」,我不能遵循邏輯:

我有一個回叫,帶有一個名爲version.txt的文件,包含文本「1 「:

git的結帳-b新

回聲2 >> version.txt(工作目錄是不髒,修改的文件)

git的結帳主(怎麼來這工作我有嗎?不是階段\承諾我的新變化)

如果我刪除我的新分支中的文件內容,或者先放置文件,則會發生同樣的情況。

有人可以幫助我瞭解什麼時候我會得到「您有本地更改無法切換分支」。 ?

感謝, 冉

+0

@Alok - 這個問題是重複所有權利,但不是你鏈接到的那個! – manojlds

回答

5

這是很簡單的,如果你有,如果你改變一個特定的分支將被修改的文件更改。

例子:

$ git init 
Initialized empty Git repository in /tmp/asadfasd/.git/ 
$ echo 1 > bar 
$ git commit -am "commit 1 master" 
[master (root-commit) 55da003] commit 1 
1 files changed, 1 insertions(+), 0 deletions(-) 
create mode 100644 bar 
$ git co -b testbranch 
Switched to a new branch 'testbranch' 
$ git co master 
Switched to branch 'master' 
$ echo 2 >> bar 
$ git commit -am "commit 2 master" 
[master c6dc6d9] commit 2 master 
1 files changed, 1 insertions(+), 0 deletions(-) 
$ git co testbranch 
Switched to branch 'testbranch' 
$ echo 3 >> bar 
$ git co master 
error: Your local changes to the following files would be overwritten by checkout: 
bar 
Please, commit your changes or stash them before you can switch branches. 
Aborting 

如果你想修改它的工作,因爲該文件將無法進行修改的文件之前重訂上主testbranch。

另一種方式來說,如果分支分歧,你修改分歧的文件它將無法正常工作。

2

當主設備和測試HEAD相同時,當您切換回時,測試中的本地更改將應用​​於主設備。

如果他們不是,比如在創建測試或在測試中額外提交之後,您在master中進行了額外的提交,您將收到警告。


(只記得,我已經回答了這個之前 - 在這裏和投票貼我的舊的答案關閉這個問題進行重複)

當你切換分支和 文件僅在本地修改,Git 將不會給你警告/ 消息(並且將把更改 合併到另一個分支中)。例如, 你有你的repo在master上,創建一個 分支temp,在文件上有一個本地修改 。現在,當您切換到 主人時,您將不會收到消息。如果 在另一方面,你讓在 溫度變化並提交他們(即臨時 從主發散),然後你 有本地修改,它會給 你消息,當您切換到 主

Git branches behaving strangely

0

切換分支時,Git只會更新索引和工作目錄中與您要切換的版本不同的部分。如果兩個修訂版本之間的文件沒有差異,則git checkout甚至不會查看它是否被修改。

在您的示例中,version.txt的內容在每個分支中都是相同的。因此,當Git在兩者之間切換時,Git樂意忽略對該文件的任何未提交的修改。