2017-01-23 55 views
0

讓我們說,git的日誌在開發服務器是這樣如何從不同的提交創建一個補丁?

aaaa - mine 
bbbb - other dev 
cccc - another dev 
dddd - mine 
eeee - another dev 
ffff - mine 
gggg - mine 
從例如日誌基於

,如何創建一個補丁出4的承諾,我有?,所以,這將是很容易將我的代碼推送到登臺服務器。

,因爲如果我這樣做

git show gggg > first.patch 
git show ffff > second.patch 
git show bbbb > third.patch 
git show aaaa > fourth.patch 

已經是相當多的。 我們當前的過程是這樣的

1)開發 2)提交併推送一次測試,並通過產品所有者驗證碼來開發服務器 3),用於分段 4創建補丁)應用補丁到分段 5)經過QA測試驗證後,推向生產。

所以如何我提交結合起來,創造一個.patch文件?

+0

您可以創建一個包含所有這些提交的分支。在這個分支上,'git rebase -i HEAD〜LASTCOMMITYOUWANT'使用你的編輯器壓縮所有那些提交到一個提交,然後在編輯器中完成。之後,它是一塊蛋糕做'混帳格式patch' – Oz123

回答

2

我會做的是一個互動的底墊,以創建只是你改變一個分支。 big需要注意的是,當你這樣做時,你正在創建一個新的,未經測試的代碼狀態。但是,這是你的問題中所固有的,因此,如果它真的是你想要做什麼:

我的建議是創建一個新的分支衍合那些(保持所有現有的分支機構是)。新的分支將代表爲這次推廣量身定製的替代歷史。

git checkout aaaa 
git checkout -b staging_branch 
git rebase --interactive gggg^ 

您將得到一個帶有待辦事項列表的編輯器。刪除除您的提交之外的提交行。如果你想要,你也可以壓縮你保留的提交(而不是全部選擇),但這並不重要。

從那裏你可以推staging_branch到你的登臺服務器,或者如果你真的想要這個補丁,你可以使用git diff(或者,如果你壓扁了提交,git show)來獲得它。

+0

順便說一句,如果這是你需要能夠做我會強烈建議你看看一個分支策略,可以讓你保持你的提交線東西直到您準備好將其與其他開發人員的工作結合起來。 –