2012-05-16 61 views
1

更新:根據我在下面的問題中的鏈接,'M'似乎意味着在分支更改期間看到Merge'd,但使用git status修改:「當我們切換到主分支時,工作目錄被認爲是「髒的」,因爲自述文件還沒有被添加到索引中並被提交。因此,git會嘗試將來自測試分支的自述文件的內容合併到主分支中的自述文件中:「git是'在改變分支時M'erging未提交的編輯?

原諒我的git無知,但爲什麼當我在上游分支中進行更改,然後檢查我的主分支(無需提交),修改後的文件follows the current branch as a Merge?當我告訴它合併時,我認爲git只合並了。我並不總是希望我的編輯能夠傳播到另一個分支,所以有沒有辦法在合併之前告訴git詢問?

iow:我如何告訴git阻止我搞砸另一個分支,如果我用當前分支中的未提交編輯按鈕來切換它?

[on branch:foo] 
$ echo test >> main.c 

[on branch:foo] 
$ cat main.c 
#include <stdio.h> 

int main void (int argc, char **argv) 
{ 
    printf ("Hello world!\n"); 
    return (0); 
} 
test 

[on branch:foo] 
$ git checkout master 
M  main.c 
Switched to branch 'master' 

[on branch:master] 
$ cat main.c 
#include <stdio.h> 

int main void (int argc, char **argv) 
{ 
    printf ("Hello world!\n"); 
    return (0); 
} 
test 

[on branch:master] 
$ 
+2

M表示已修改,未合併。輸入'git status'查看更多信息 –

+2

Git沒有合併。更改不屬於特定的分支,它們漂浮在工作樹頂上。 – knittl

回答

1

將它們還原,它取決於您想要對更改進行的操作。

如果你想扔掉使用git checkout -f master

如果你想存下來,git stash變化清理工作樹和git pop無論你想再次無論何時應用更改。

如果您希望將更改留在分支中,只需在git checkout master之前更改git commit

+0

謝謝!我不知道-f參數。這一定會派上用場。仍然想知道如何配置回購,因此它不會默認合併。 – wufoo

+0

IMO,你將無法在一個命令中完成它,你將不得不使用多個命令,並且必須使用一個函數或'git別名'。這種行爲沒有什麼錯,你得到一個警告(用'M ...'行),並且像knitti指出的那樣,它不是一個合併,只是一個工作樹的修改,除非你提交。你可以放棄更改(重置),存儲它們,或者在結賬之後或之前提交它們。你能告訴我們爲什麼你想改變這種行爲嗎? – KurzedMetal

+0

我已經做了一些更多的實驗,現在我看到了nitti的含義。 Git在更改分支時應用這些更改,但不會使其變爲永久。如果我有未提交的編輯,並創建一個新的分支,我可以在新分支中提交更改,其他分支保持不變。編輯隻影響我在提交的分支中的文件。我沒有意識到git以這種方式工作。不,我不希望改變行爲。我只需要了解git在做什麼。謝謝您的幫助! – wufoo

1

M代表修改後的含義,您的工作目錄中有修改後的版本。又名你有你還沒有犯下的變化。

當您更改分支機構時,您未提交的更改會隨之發生。如果您想更改分支,但尚未準備好提交它們,您可以使用git stash存儲它們,稍後使用git stash pop

+0

謝謝!有沒有辦法配置git拒絕更改分支如果有未提交的編輯? git-checkout的man頁面提到'-m'標誌爲「拒絕切換分支」,但是接下來會說它最終會做3路合併。 :/ – wufoo

+0

你可以使用命令''''git diff-files --quiet && git checkout branchName'''首先檢查是否有任何未提交的更改,然後執行結帳。這可以放在你的bashrc中的一個函數中,或者你可以爲它命名一個命令,而不用關閉分支名稱。 '''別名co =「git diff-files --quiet && git checkout」''' – JDwyer

+0

如果你正在用bash函數寫這個,你可能會輸出一個錯誤信息。 '''checkout(){git diff-files --quiet && git checkout $ 1 ||回聲'未提交更改,提交或隱藏'}''' – JDwyer