簡體   English   中英

如何成功保持主分支和開發分支同步? GIT

[英]How to successfully keep master and development branches in sync? GIT

我喜歡在我的開發分支上進行開發,然后在我准備投入生產時合並到master。 只要我不向主分支提交任何內容,一切順利。

但是,我遇到過一些情況,我已經向主分支提交了與開發分支上已更改的內容沖突的內容。 當我將開發分支合並到主服務器中時,我必須解決沖突。 沒什么大不了的,但是為了確保開發分支在主分支中具有所有內容(確保開發是最新的)我合並了主分支並最終必須再次解決沖突。

我聽說變革通常很糟糕,特別是對於你公開推出的東西。

有沒有更好的方法來管理這種類型的設置?

定期從主服務器合並到您的開發分支,然后解決任何沖突。 (如果你經常這樣做,沖突通常很小。)

當合並回主人的時候,發展不應該發生沖突。

我認為你可能會在這里遇到一些誤解,這些誤解對你的影響大於技術上的錯誤。

首先,您通常不應直接提交到主分支。 從你描述你的情況的方式來看,我不確定這是否正在發生,但如果是,請盡量不這樣做。

如果您發現某些內容無法完全合並到master中,則不應嘗試將問題解決到master本身。 相反,您應該在功能分支上修復問題。 一旦你解決了那里的問題,你就可以干凈地合並到主人。

就rebase而言,在你推送到遠程存儲庫之前使用rebase是完全沒問題的。 一旦你把東西推到了遠程倉庫,你就不想變硬了,因為那時你正在為別人弄亂歷史,而git無法真正解決這個問題。 所以不要害怕變質,只知道何時使用它以及何時不使用它。

您可以在這里使用變基的一種方法(再次,假設您沒有遠程推送有問題的分支)來幫助解決您的問題,就是將無法干凈地合並到主服務器中的功能分支轉換為主服務器。 這將強制您解決該分支上的問題。 一旦解決了,合並到master中應該是微不足道的(除非master在此期間再次被更改)並且你可以干凈地合並到master中。

有很多可用於git的教程,他們也有一些很好的代碼示例也可以提供幫助。 這是更經典的一個,我相信這里描述的工作流程運作良好。 http://nvie.com/posts/a-successful-git-branching-model/

請注意我不支持名為'git flow'的bash腳本集,它試圖在那里半自動化工作流程(當我們嘗試這些腳本時,這些腳本對我們來說效果不好),但是那里描述的工作流本身效果很好。

我這樣做的方式是反過來:

  1. 將master合並到dev
  2. 在此之后合並dev to master

在合並時解決所有沖突。

雖然git在合並和處理分支時非常出色,但我認為除了使用3向差異/合並工具進行手動,繁瑣的工作之外,我認為沒有快速解決沖突的方法。

此外,它有助於做@cHao在下面的答案中所說的 - 經常合並,合並小,你幾乎不會有大的沖突合並情況。

從我所知,開發是所有新事物發生的地方。 所以,如果是這種情況,請從開發(功能分支)開始分支。 在那個分支上工作。 當你完成后,只需將develop合並到你的功能分支中,以確保它是最新的。 然后,簽出開發分支並將您的功能分支合並到其中。 當團隊中的人繼續向開發分支添加功能時,管理員會在某些時候好像okay, we're releasing ,所以在那時你將把master合並到develop中(只是因為有人做了一個流氓提交)在主人)然后結帳主和合並發展到它。

希望沒有人直接承諾發展或掌握。 這兩個應該只合並到。 另外,我希望您在開發功能時和合並后進行測試。

rebase而言,是的,他們說在你分享你的分支后不要這樣做。 所以在這種情況下你不會在開發分支上這樣做,因為它是共享的。

我做

git checkout master
git reset --hard dev

所以主人變得完全開發。 如果要在master上提交修補程序,請不要忘記重新設置dev。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM