[英]git - move specific commits from develop to feature branch
因此,在我們的git信息庫中,一些提交(而不是現在的最新提交)已提交到我們的開發分支,而這些分支本應該在功能分支中。 他們應該做的分支位於線下。 提交最終是針對尚未完成的功能,因此,現在我們確實需要將它們從developer分支中刪除,以便我們可以回到擁有正常運行的development分支的位置。
有沒有一種方法可以將特定提交從developer分支移到Feature分支的開始? 並非100%熟悉git,因此如果需要任何其他信息,請詢問。
嘗試櫻桃挑。 使用cherry pick,您可以將另一個分支的選定提交提交到當前分支。
首先,通常的免責聲明:您要執行的操作(即從分支中刪除提交)意味着重寫歷史記錄 ,因此請謹慎操作。
假設您的歷史記錄如下所示:
A--B--C--D--E develop
\
F--G feature
而要“動” 1款B
和C
從develop
到feature
,你可以做到這一點的rebase --onto
命令:
git checkout develop
git rebase --onto feature A C
# This will apply commits B and C on top of the commit referenced by "feature"
現在,您的歷史記錄將如下所示:
A--B--C--D--E develop
\
F--G--B'--C' feature
請注意, B'
和C'
(讀作“ B質數 ”和“ C質數 ”)是新提交 ,它們與B
和C
包含相同的更改,但是由於它們具有不同的父C
而具有不同的提交ID。
在這一點上,您可以通過說出從develop
分支中刪除B
和C
:
git rebase --onto A C
# This means rebase the current branch on top of commit A instead of C
這將導致在develop
不再可以到達提交B
和C
:
A--D'--E' develop
A--B--C--D
\
F--G--B'--C' feature
但是,你仍然有feature
基於關閉舊的提交D
,目前已被改寫為D'
。 為了解決這個問題,您需要再次在新的D'
之上重新設置feature
:
git checkout feature
git rebase --onto D' D
最終導致:
A--D'--E' develop
\
F--G--B'--C' feature
這可能是您想要的。
1)有關在Git中“移動”提交的含義,請參見@WilliamPursell的評論 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.