2017-01-30 125 views
3

我發現類似的問題已經被多次提出,但我仍然不明白,我需要一個實際的例子來說明我的情況。在github上創建單個提交的拉取請求

我有兩個分支的GitHub庫:

  1. master這是我的開發分支,在這裏我要推,我想推的錯誤定價只有等到所有的最新變化,新特點
  2. stable新功能已經過測試。

現在我已經做了4次提交併將它們推送到master。前三個提交是新功能,上次提交是bug修復。

在github中,如果我選擇stable分支,則表明它在主機後面4次提交(這是正確的)。

現在我想上次提交只有被推送到穩定的分支。我如何實現這一目標?

回答

4

您可以在stable分支中挑選last-commit-hash並推送至遠程。

$ git fetch 
$ git log        # copy the last-commit-hash 

$ git checkout -b stable origin/stable # create local/stable branch from remote/stable 
$ git cherry-pick <last-commit-hash> # take the last-commit 
$ git push origin HEAD     # update remote/stable 
+0

謝謝!現在我終於明白了! :) – lviggiani

1

解決方案:

您可以使用git櫻桃挑選應用本身就是一個單一提交到當前分支。

git checkout stable 
git cherry-pick <last_commit_id> 

背景:

git的櫻桃挑選適用於所做的更改現有承諾的另一個分支,同時記錄一個新的提交。實質上,您可以將提交從分支複製到分支。

考慮下面的樹

dd2e86 - 946992 - 9143a9 - a6fd86 - 5a6057 [master] 
      \ 
      76cada - 62ecb3 - b886a0 [feature] 

比方說,我們要b886a0複製到主(對5a6057頂部)。

我們可以運行

git checkout master 
git cherry-pick b886a0 
Now our tree will look something like: 

dd2e86 - 946992 - 9143a9 - a6fd86 - 5a6057 - a66b23 [master] 
      \ 
      76cada - 62ecb3 - b886a0 [feature] 
0

你需要有選擇性的採取提交了另一個分支所以這聽起來完全像什麼摘櫻桃是應該做的。只要結帳穩定,並做git cherry-pick <commit hash>

至於你爲什麼,你可能想讀git工作流程,特別是一個名爲gitflow。在我看來,您需要一個像功能一樣的分支來修復錯誤,並將其合併回「穩定」主線。在這裏你只是做一個gitmerge,而當你在同一個分支中混合功能開發和bug修復時,你會遇到你必須仔細挑選並仔細忽略提交新功能才能進入你想要的bug修復提交的情況。

相關問題