2011-11-01 242 views
7

我們的團隊使用Github上引入請求來管理我們的工作流程,就像what is described here。在手動審查已接受的合併請求後,我們偶爾需要恢復合併,因爲它尚未準備好部署到我們的生產服務器。還原一個Git合併提交,然後恢復該還原

但是,如果開發者試圖再次發出拉入請求,它不承認這些變化恢復,並認爲該提交已經在主分支。它只會包括自恢復以來他們最近的提交,但我們真正想要的是重新引入所有提交的提交,以及他們的新作品。換句話說,我們喜歡重新發布原始Pull Request的方式。

由於Github的不支持該功能(即,既沒有恢復的合併,也不撤消/重新發出原始的拉入請求),我目前如果還原還原合併。這感覺不對。

我可以用什麼其他的方式來實現的git相同的目標? (或者Github上,如果有可能)

+1

如果您在本地嘗試合併來自拉取請求的提交,並在測試之後決定您不想合併,那麼爲什麼要還原合併,而不是僅僅將合併重置爲合併之前? (我假設您在合併拉取請求之後,但在決定是否保留之前不會發布您的主分支)。 –

+0

一旦合併請求被接受,它就會自動合併到主人中,這樣我們團隊中的任何人都可以從那裏拉出來任何時候。通過回覆,我遵循了我在我的問題中引用的博文的建議,因爲它允許我們簡單地轉到其他Pull請求並最小化工作流程中的瓶頸。我擔心重置會讓事情變得更糟,因爲主服務器始終可供我們的回購協作者使用。 –

+0

啊,所以你實際上接受了GitHub上的pull請求。 (要求GitHub實際執行合併的功能最近才添加)。相反,我會將建議的提交提取到本地存儲庫中,合併它們並在那裏進行測試。如果您對此感到滿意,那麼您可以將拉取請求標記爲在GitHub上接受。 –

回答

1

我認爲你的問題就在這裏出現,因爲當你正在處理的引入請求,你選擇自動合併他們在GitHub上。在處理拉請求described in the documentation的三種建議方法中,您使用的是最後一個(「自動合併」),它只有recently implemented。就我個人而言,我認爲這隻適用於明顯正確的無關緊要的請求。對於任何更復雜的,我想用第一種方法,即

  • 將申請者的資料庫作爲一個新的遠程
  • 從遠程
  • 試圖合併
  • 測試仔細
  • 取推動結果,如果你快樂

這意味着合併版本只有在你測試它並決定t推動。如果你不想,你可以重新設置你的主分支到原來的位置。


由於利益的問題,它可能是值得一說的更多,如果你最終不得不恢復一個令人遺憾的合併會發生什麼,但還是希望有重新合併以後版本的選項該分支。雖然它可能會感覺錯誤,但據我所知,處理這種情況的最簡單方法的確是恢復回覆。您可以通過Linux Torvalds在this post from the Pro Git bloganother discussion of the same problem中找到關於此問題的更多討論,這可能也會有所幫助。

+0

嗨馬克 - 我讀過最近的2篇文章,並感激你提醒我他們。我很想實施你的建議,除非我們的組織成員沒有在Github上擁有自己的分支,他們僅僅從我們的回購中克隆出來,因爲我們的老闆希望每個開發人員都將他們的工作推向特色分支,只是我們有一份副本他們的工作。但是,我可能能夠在單個共享機器上設置所有「遙控器」,並讓它們推動到我們可以測試的地方。最大的障礙將是部署/審查流程的自動化。感謝您的洞察! –

+0

@芯片城堡:沒問題。事實上,如果他們只是推送到功能分支,它就更容易了 - 您不需要添加遠程,只需執行「git fetch origin」並嘗試從右邊的遠程跟蹤分支進行合併。 –

+0

嗯......我們當前的流程要求質量檢查人員在CI通過後手動檢查它。我需要將Jenkins配置爲「git pull --rebase origin master」以獲得最新的副本,然後簽出功能分支和「git rebase -i」以確保在運行測試套件之前一切都是最新的。如果通過,我可以自動部署到測試服務器,我們的質量檢查評估。然後,如果所有這些都通過了,我可以接受合併請求,因爲這是合併到主服務器中的唯一操作。這可能有很大幫助。讓我知道你的想法。謝謝! –

0

我建議你們採取不同的方法。您恢復和恢復回覆的工作流程似乎對我非常困惑。您試圖解決的實際問題可以以不同方式解決。

我建議你改變你的工作流使用兩個分支。一個穩定的分支(master)和一個開發分支(develop)。所有工作都進入develop分支,或進入單獨的主題分支。拉請求總是針對develop分支提交,然後在批准時合併爲develop

master初始分支的develop。只要develop處於穩定狀態,就會將其合併到master中。 master是當前的穩定版本。

這是鬆散地基於nvie's "A successful Git branching model"

+0

我以前閱讀過這篇文章,這是一個很好的方法,但它對我們的團隊來說似乎並不適用。我們已經在一個合併到master(通過Github Pull Request)之後使用了特性分支和CI運行,因此擁有一個我們嘗試了一段時間的開發分支只是更多的工作來管理。另外,即使在我們的測試套件中,有時候主人變得不穩定,所以它並沒有真正幫助我們的團隊。不過,我會繼續記住這一點。再次感謝您的建議。 –