在Subversion中,使用「svn merge -r a:b mybranch」可以輕鬆合併來自分支的一系列變更集/差異。但在git中,我發現只能從分支中選擇一個提交來將該補丁應用於我當前的工作分支。所以我想知道是否有一種快速的方法來將bugfix分支中的兩個標籤之間的所有提交應用到我當前的主分支?git修補分支的子範圍的最佳方法是什麼?
20
A
回答
44
執行您正在查找的操作的最簡單方法是使用git rebase
。這是一個配方。假設標籤A是您要選擇的補丁系列基礎上的提交,並且標籤B是系列中最終補丁的提交。另外,假設br是當前分支的名稱和應該應用新補丁序列的分支。
# Checkout a new temporary branch at the current location
git checkout -b tmp
# Move the br branch to the head of the new patchset
git branch -f br B
# Rebase the patchset onto tmp, the old location of br
git rebase --onto tmp A br
4
據我所知,你不能git合併這樣。合併旨在加入兩個有共同歷史的分支,而不是用於提取幾個提交或補丁序列。我覺得櫻桃採摘基本上是你要求的。
您可以使用git的櫻桃(不櫻桃採摘!)來找出哪些承諾應被插入到您的分支,然後git的櫻桃採摘他們。你也可以明確地要求git cherry-pick來記錄這些提交的來源,以防你從公共分支中挑選。這可能是解決這個問題的最好方法。 (另一個可能是通過git format-patch將它們導出,然後使用git-am/git-apply導入它們,但這可能會比較慢,再加上它不會記錄提交的來源。)
編輯:「公共」(分支)應理解爲不受歷史編輯限制的內容。當然,您可以在開發閉源軟件時沒有公開代碼就這樣做。
5
我發現做到這一點最簡單的方法是:
git cherry-pick starthash..endhash
注意這兩個點都沒有空格從哈希標籤,它們分隔條件。
相關問題
- 1. 用git管理本地特性分支的最佳方法是什麼?
- 2. Git的修補程序分支合併
- 3. 在Git中修復損壞的分支的最佳做法?
- 4. 找出日期是否在特定範圍內的最佳方法是什麼?
- 5. GoogleAuthUtil.getToken()方法的範圍是什麼?
- 6. 用Github處理許多分支(和「子分叉」)的最佳方式是什麼?
- 7. 什麼是動態值範圍選擇表格的最佳方法?
- 8. 在CakePHP視圖中限制日期範圍的最佳方法是什麼?
- 9. Java中的範圍,最好的方法是什麼?
- 10. 使用Intel SSE執行分支的最佳方式是什麼?
- 11. Git,分支的定義範圍
- 12. 將Heroku與git repo同步的最佳方法是什麼?
- 13. 解決這個範圍問題的最好方法是什麼?
- 14. 在jar中修改GWT庫的最佳方法是什麼?
- 15. 修剪json數據的最佳方法是什麼?
- 16. 評論的最佳方法是什麼?
- 17. 分享點的最佳分佈式開發方法是什麼
- 18. 使用Mercurial或Git分支處理數據庫分支的標準或最佳方式是什麼?
- 19. Git:什麼是將工作分支合併到主的最快方法?
- 20. 什麼是祖先組件變量的最佳範圍
- 21. 在克隆git-svn中的主幹之後克隆分支的最佳方法是什麼?
- 22. Git合併修補程序分支到功能分支,然後刪除修補程序分支?
- 23. 什麼是TimeSeriesChart的最大範圍值
- 24. 針對修補程序和修補程序等發佈分支的Git rebase
- 25. 的最佳方式範圍分成n個相等的範圍在Python
- 26. 排序部分排序列表的最佳方法是什麼?
- 27. 刪除部分字符串的最佳方法是什麼? (C#)
- 28. CakePHP - 創建管理部分的最佳方法是什麼
- 29. 在SQL Server中分區大表的最佳方法是什麼?
- 30. Perforce中的分支規範是什麼?
@Charles Bailey:太棒了! – jscoot 2009-02-04 10:51:49
應該指出的是,你不能以這種方式保留關於這些提交的來源的信息。 – 2009-02-04 23:13:42