2016-01-14 65 views
0

我是Git(Gitlab)分支和合並的新手,當然,這是一個相當複雜的場景。合併多個Git分支並將它們推送到遠程服務器(Gitlab)

回購(「myapp」)有一個名爲「cleanup」的功能分支。我被要求在本地分支分支,添加一些更改,將這些更改合併到cleanup,然後合併cleanup與主線(「origin」?)。所以我克隆myapp,切換到cleanup分支,然後支,並給那支mycleanups

origin/mainline (exists on remote Gitlab server as well as locally) 
    +---> cleanup (exists on remote Gitlab server as well as locally) 
      +---> mycleanups (just exists locally) 

所以,現在我想要做的是:

  1. 合併mycleanupscleanup,希望只本地
  2. 然後按合併(mycleanups + cleanup)至cleanup分支(除非此步驟不必要
  3. 合併cleanuporigin並推送這些更改。這應該需要某種對Gitlab(從cleanuporigin)「合併請求」 ......

    我很舒服合併,但不知道我應該嚴格做好與當地應該怎樣推到遠程Gitlab服務器。有人可以提供一系列具體的步驟(例如git命令!),我可以如何在本地和遠程實現這種多分支合併?

回答

1

聽起來好像mycleanup分支是不必要的。

你有你的克隆,所以你簽出cleanup分支(它創建遠程分支cleanup的本地副本):

git checkout cleanup

進行一些更改。提交他們。

此時,您的本地分支在遠程分支之前。您可以使用git status查看此信息。

接下來,運行git push。如果在此期間沒有其他人推動,它會接受它。否則,它會拒絕它,你需要從遠程引入更改(合併 - git pull)。

當進行清理檢出時,它會將其設置爲跟蹤同名遠程分支。這是爲了將來的拉動和推動 - 所以它知道去哪裏推拉。

接下來,在Gitlab中,它應該向您顯示Merge Requests頁面中最近推送的分支。然後,您可以點擊「新合併請求」,然後將其提交給項目所有者,以供他們在閒暇時複習併合併到mainline

+0

感謝您對@bcmcfc(+1)的精彩解說 - 儘管如此,您仍然可以快速跟進。你說:「做一些改變,提交它們並推送它們。」但是接下來你會說「*在這一點上,你的本地分支在遠程分支之前。」**這是我心理掛斷的地方!**如果我只是將更改推送到遠程Gitlab服務器('gi​​t push'),那麼爲什麼我的本地分支會在遠程分支的前面*不應該現在完全相同(因爲我只是推他們)?!?!謝謝你的澄清! – smeeb

+0

在這個階段你還沒有推 - 你只檢查了遙控器並做了一些改變。 – bcmcfc

+0

對不起,不要在這裏困難(認真!)。你的逐字聲明是:「*做一些改變,提交併推送它們(git commit,git push)(此時,你的本地分支在遠程分支之前。」所以你說:(1)make (2)提交,(3)推送,然後(4)本地分支在遠程分支前面,我正在閱讀這篇文章嗎?!? – smeeb

1

執行:

git的結帳清理

混帳合併mycleanup

的git拉出身清理

混帳推起源清理

+0

謝謝@yorammi(+1) - 你能解釋一下這些步驟嗎(教一個男人釣魚和展示一個男人釣魚等)?例如,我想解決[SourceTree](https://www.sourcetreeapp.com)內部的合併衝突,我該如何設置?另外,Gitlab上的合併請求會在何處發揮作用?再次感謝!!! – smeeb

+0

Git和其他源代碼控制系統之間的主要區別 - 正如我所看到的 - 是Git用戶應該更好地理解幕後發生的事情。有許多偉大的網站,你可以學習這一點。從https://git-scm.com/開始。 一般來說,上述命令完全按照您的描述使用Git命令進行描述:merge,pull和push。 – yorammi