2014-09-24 85 views
24

我創建了一個分支來嘗試一種不同的方法,並且它工作,所以我想將「Farmcrops」分支合併到「Master」中以保留這些更改,但繼續「Farmcrops」分支以探索另一種可能性。這樣,如果這個最新的變化不起作用,我可以回到「主」,這將包括第一輪變更。如何將分支合併到主分支中,但繼續在分支上工作?

我該怎麼做?

+0

新的探索仍然基於我對cropcarms改變農作物,所以我繼續使用該分支是有意義的,但如果它更容易在git中合併和分支,我可以做到這一點。 – jgravois 2014-09-24 19:21:56

回答

11

下面是這個過程中你正在尋找:

  1. git checkout master
  2. git merge Farmcrops
  3. git push origin master
  4. git branch -d Farmcrops
  5. git checkout master
  6. git checkout -b Farmcrops
  7. 繼續在樹枝上Farmcrops您提交...

分行只是指針,它很容易創建/刪除一個分支,如果你的分支Farmcrops不會在遠程存儲庫上推送,它絕對沒有依賴關係。您可以在合併後將其刪除,並從主服務器重新創建它。

希望這會幫助你。

+8

儘管如此,您不應該將'Farmcrops'直接合併到'master'中。先將'master'合併到'Farmcrops'中,檢查一切正常,然後纔將'Farmcrops'合併到'master'中。 – Jubobs 2014-09-24 19:31:06

+0

@Jubobs感謝你的建議,我從來沒有嘗試過這種方法。但是合併行爲是在本地完成的,你有足夠的時間來驗證新版本,測試它並確保一切正常,不是嗎?這似乎是一個無用的步驟,先按照您的建議進行第一次合併 – 2014-09-24 19:34:47

+2

即使所有東西都是本地的,第一次合併也是有用的,因爲它促進了隔離:它爲您節省了在master上創建「壞」提交的風險,必須將'master'重置爲它的父對象之一,或者還原'master'上的最後一個提交。這是一個安全網。 – Jubobs 2014-09-24 19:36:39

0

在下面的鏈接中,介紹瞭如何創建修補程序分支,進行更改並將其合併到主服務器。合併後,只有區別,修復分支被刪除。

只需使用Farmcrops作爲分支名稱,合併後不要刪除分支。

GIT-SCM: Basic Branching and Merging

步驟1中創建一個分支,然後進行更改

$ git checkout Farmcrops 
Switched to a new branch 'Farmcrops' 
$ vim index.html 
$ git commit -a -m 'fix the broken email address' 
[Farmcrops 3a0874c] fix the broken email address 
1 files changed, 1 deletion(-) 

[步驟2然後,回到主分支和合並

$ git checkout master 
$ git merge Farmcrops 
Updating f42c576..3a0874c 
Fast-forward 
README | 1 - 
1 file changed, 1 deletion(-) 

而且,如果你想在同一分支上進行更多的更改,再次應用[步驟1]。

當您完成更改後再次應用[步驟2]。

根據需要按照以下步驟操作。

一旦你用這個分支完成你的工作,你可以刪除它。

$ git branch -d Farmcrops 
Deleted branch Farmcrops (was 3a0874c). 

NOT:不要合併的,我建議重訂GIT-SCM: Rebase

git rebase Farmcrops 
+0

OP的倉庫中已經存在'Farmcrops'。 – Jubobs 2014-09-24 19:29:39

+0

我改變了陳述; 「git checkout -b Farmcrops」 - >「git checkout Farmcrops」,因爲分支已經存在,STEP 1可以應用多次。 – wasabi 2014-09-24 19:38:12

27

如果我理解正確的,你從

-- o -- o -- o [master] 
    \ 
    o -- o [Farmcrops] 

開始你不應該直接合併到Farmcropsmaster,因爲你運行的,按照慣例,應該是打破了代碼master的風險,更穩定。相反,檢查出Farmcrops併合並master

git checkout Farmcrops 
git merge master 

然後你會得到

-- o -- o -- o [master] 
    \   \ 
    o -- o -- o [HEAD -> Farmcrops] 

運行一些測試;確保一切按預期工作。然後檢查master和合並Farmcrops進去:

git checkout master 
git merge Farmcrops 

您的回購,然後將這個樣子:

-- o -- o -- o 
    \   \ 
    o -- o -- o [HEAD -> master,Farmcrops] 

現在,再次檢查了Farmcrops,繼續實驗,就更加的提交,等等。 ..

-- o -- o -- o 
    \   \ 
    o -- o -- o [master] 
       \ 
       o -- o -- o [HEAD -> Farmcrops] 

如果你總是可以依傍master(現在包含「第一輪的變化」,因爲你把它)你關於Farmcrops的新實驗並沒有那麼好。

+1

關於此的視覺效果非常有幫助。感謝您抽出寶貴時間。 – 2018-02-15 01:09:14

相關問題