2010-12-02 74 views
0
  1. 說我創建了一個分支,然後合併成主,然後意識到事情出錯了。我如何恢復到我合併之前?幾個git使用問題

  2. 說我創建一個分支,在它上面工作,然後去合併並獲得衝突的分配。假設我不想處理這個問題,現在讓新分支成爲主人,我該怎麼做?

順便說一句,你在網上看到過的最好的教程是什麼,現實生活中的GIT使用模式?

回答

0
  1. 如果沒有按下,請檢查主設備,然後使用git reset --hard和最後一個良好提交的名稱。或者,使用reflog:[email protected]{1}將帶您回到以前的位置。如果它被推送,請使用git-revert創建一個新的提交更正。
  2. 檢查出主人,然後使用git reset --hard mybranch。這使得高手指向與mybranch相同的提交,實質上是拋棄了分支之後所有對master的工作。再次,如果主人的工作被公諸於衆,把它扔掉是個壞主意。
  3. 請參閱Git Development Strategy for Small Team
+0

-1永不改變公共分支上的歷史記錄 – 2010-12-02 16:32:42

+0

沒有指定它是否被推送。 – 2010-12-02 16:33:14

0
  1. 說我創建一個分支,然後合併成高手,那麼實現的事情出錯。我如何恢復到我合併之前?

    1. 如果你還沒有推到主線或有推,知道absoutely確保沒有其他人已經從主線拉然後做:

      的git的復位 - 硬HEAD〜N(N爲你想提交的數量回去)

    2. 如果你推或無法確定沒有人還沒有拉昇然後坦白到自己的錯誤,並做:

      混帳恢復

  2. 說我創建了一個分支,在它上面工作,然後去合併並獲得衝突的分配。假設我不想處理這個問題,現在讓新分支成爲主人,我該怎麼做?

    git checkout <desired branch> 
    
    
    git branch -d master 
    
    
    git branch -m <desired branch> master 
    
  3. 順便說一句,什麼是你現實生活GIT使用模式在網上看到的最好的教程?

    http://nvie.com/posts/a-successful-git-branching-model/

1
  1. 如果合併,不希望犯,正確的命令是

    git reset --hard [email protected]{1} 
    

    這意味着重置分支到其原來的位置(讀使用{}語法 - 你可以通過閱讀關於git reflog獲得大部分信息)。 HEAD^1也可以工作,但您必須知道您指定了當前提交的第一個父項。

    如果您已經推送了此提交,請謹慎通知所有人。如果您無法在未來強制更新共享存儲庫中的分支,請不要這樣做。

  2. 執行此操作的正確方法是再次合併,但這次是從新分支執行並指定您只需要您的一方。 「他們的」策略已被棄用。

    git merge -s ours master 
    

    然後更新主到另一個分支是:

    git checkout master 
    git merge --ff-only otherbranch 
    

    或者,相反,因爲你知道這將是一個快進合併(以上只是一個安全檢查) ,您可以將主服務器更新爲當前提交而不檢出:

    git update-ref refs/heads/master HEAD 
    

    並且您可以繼續在您的分支上工作。如果你打算在master上工作,那麼使用前面的命令。

  3. 這裏有一些鏈接,我發現有用:

    gitready.com Commuinity Git Book Pro Git Book my article

    其它來源:

    IRC channel on freenode Twitter Search waterfall

    你也可以找我在同一個ID下的twitter上。