2015-10-07 178 views
1

我正在努力變得更熟悉git。我是在這裏工作的唯一一個人,所以我一直都在努力修改主分支,但我需要一步一步來做,並且更加流利地與分支機構合作。所以昨天我創建了一個分支(QF1),切換到它並開始進行一些更改。當我切換回我的主分支時,我注意到了一些東西:它顯然切換了分支,並向我呈現了一個以「M」開頭的文件列表(順便說一下,雖然下面的輸出表示文件在這個階段上演,他們當時並沒有執行我的第一個「git checkout master」)。因此,在做了一些研究之後,我發現Ms表示git已將我在QF1分支中完成的更改合併到主控中。我不想讓這種事情發生。我仍然對此有點模糊,但我正在通過git-scm.com來更好地理解它。我以爲切換分支會將主人的副本拉回到我的工作目錄中,但我的編輯並沒有告訴我發生了這種情況(gvim)。Git&自動合併分支與主分支

  1. 我不希望這再次發生。 git中有什麼我可以設置告訴它不切換分支,如果工作目錄中有更改的文件尚未提交或至少添加到分支索引中?
  2. 我是否需要在這裏使用「git reset」將我的主分支指向我爲master所做的最後一次提交?我沒有在這裏做過任何事情,只是做了一個「git add」。

    $ git status 
    # On branch QF1 
    # Changes to be committed: 
    # (use "git reset HEAD <file>..." to unstage) 
    # 
    #  modified: AuthNotifyResponse.cpp 
    #  modified: AuthNotifyResponse.h 
    #  modified: DataElementsTransactionResponse.cpp 
    #  modified: DataElementsTransactionResponse.h 
    #  modified: TransactionSession.cpp 
    #  modified: authNotifyResponse.xsd 
    #  modified: xch.h 
    # 
    
    $ git checkout master 
    M  AuthNotifyResponse.cpp 
    M  AuthNotifyResponse.h 
    M  DataElementsTransactionResponse.cpp 
    M  DataElementsTransactionResponse.h 
    M  TransactionSession.cpp 
    M  authNotifyResponse.xsd 
    M  xch.h 
    Switched to branch 'master' 
    
    $ git checkout QF1 
    M  AuthNotifyResponse.cpp 
    M  AuthNotifyResponse.h 
    M  DataElementsTransactionResponse.cpp 
    M  DataElementsTransactionResponse.h 
    M  TransactionSession.cpp 
    M  authNotifyResponse.xsd 
    M  xch.h 
    Switched to branch 'QF1' 
    

我真的不希望,因爲它們涉及的項目在這裏另一組正在提交修改到QF1,並沒有完成他們。如果這是我需要做的,我可以提交它們並在稍後修改提交。

也許我可以放寬主人的變化?我只是在QF1中並沒有真正把它們放在主人手中。

+0

我想我真的可以將更改提交到分支,而不是將我的提交推送到存儲庫,或者我可以使用git存儲。 –

回答

2

「M」並不意味着合併它意味着修改。發生這種情況的原因是因爲您對本地文件進行了更改,然後將工作副本切換回主分支,而無需對更改進行任何操作,因此這些更改仍然存在。爲了避免這種情況,您必須在切換分支之前進行工作。

您聲明您希望在使用分支時更好。這是您在與分支機構合作時必須學習的內容之一。承諾首先爲你和其他人承諾。當你進行提交時,你正在進行所有更改並記錄它們。如果你不想要你的改變,就放棄它們。但是如果你確實需要這些改變,那麼即使它們沒有完成,也要提交它們。根本不要將分支發佈給其他人看。

如果您擔心其他人看到一堆檢查點提交,您也可以在推送前參與sausage making

從本質上講,您正在做的是創建一個功能分支,並且在您轉移到其他功能之前不會完成功能。這正是爲什麼功能分支存在的原因。不要抵制它,與它一起工作。