我有BranchA
這是113提交BranchB
之前提交。如何在Git中將特定的提交從一個分支合併到另一個分支?
但我只希望BranchA
的最後10個左右的提交合併爲BranchB
。
有沒有辦法做到這一點?
我有BranchA
這是113提交BranchB
之前提交。如何在Git中將特定的提交從一個分支合併到另一個分支?
但我只希望BranchA
的最後10個左右的提交合併爲BranchB
。
有沒有辦法做到這一點?
git cherry-pick <commit>
命令允許您從任何分支中進行單次提交,並且實質上在您的工作分支中重新綁定它。
Chapter 5 of the Pro Git book explains it better than I can,完整的圖和等;查找標題爲「重新激活和櫻桃採摘工作流程」的部分。 (The chapter on Rebasing也是不錯的閱讀。)
最後,還有一些good comments on the cherry-picking vs merging vs rebasing in another SO question。
問題:說commit'A'從'master'分支出來,你做了一些工作,通過'E'創建子提交'B'。說'E'只有'D'加了1行。如果你把'E'櫻花選到''master',它是否應用*所有*從'A'到'E'到'master'分支的變化,或者它只會*應用從'D'變化到'E',即它只增加了1行到'master'?如果是前者,我如何實現後者? (除了手動複製和粘貼) – chharvey 2014-03-25 10:44:31
git cherry-pick -n
你可以添加細節?我不熟悉那個術語 – NullVoxPopuli 2011-06-16 12:50:41
@thelindyhop即時通訊尋找他們 – hvgotcodes 2011-06-16 12:51:59
@thelindyhop爲什麼你不只是rebasing? – hvgotcodes 2011-06-16 12:53:23
如果BranchA未被推送到遠程,那麼您可以使用rebase
然後簡單merge
來重新排序提交。如果可能,最好在之上使用merge
,因爲它不會創建重複的提交。
git checkout BranchA
git rebase -i HEAD~113
... reorder the commits so the 10 you want are first ...
git checkout BranchB
git merge [the 10th commit]
來源:https://git-scm.com/book/en/v2/Distributed-Git-Maintaining-a-Project#Integrating-Contributed-Work
的另一種方式從一個分支移動介紹工作,另一個是櫻桃採摘它。 Git中的櫻桃選擇就像是一次單一提交的變形。它需要在提交中引入的修補程序,並嘗試將其重新應用到當前所在的分支上。如果您在主題分支上有多個提交,並且您只想集成其中一個,或者您只在主題分支上提交了一個提交,並且您更願意挑選它而不是運行rebase,那麼這非常有用。例如,假設你有一個項目,看起來像這樣:
如果你想拉提交e43a6到你的主分支,你可以運行
$ git cherry-pick e43a6
Finished one cherry-pick.
[master]: created a0a41a9: "More friendly message when locking the index fails."
3 files changed, 17 insertions(+), 3 deletions(-)
這拉引入了相同的變化在e43a6中,但您會得到一個新的提交SHA-1值,因爲應用的日期不同。現在你的歷史看起來是這樣的:
現在你可以刪除你的主題分支,放棄你不想在拉提交的
可能重複[如何合併特定提交英寸git](http://stackoverflow.com/questions/881092/how-to-merge-a-specific-commit-in-git) – chharvey 2014-03-25 10:32:27