簡體   English   中英

git-將特定提交從開發移到功能分支

[英]git - move specific commits from develop to feature branch

因此,在我們的git信息庫中,一些提交(而不是現在的最新提交)已提交到我們的開發分支,而這些分支本應該在功能分支中。 他們應該做的分支位於線下。 提交最終是針對尚未完成的功能,因此,現在我們確實需要將它們從developer分支中刪除,以便我們可以回到擁有正常運行的development分支的位置。

有沒有一種方法可以將特定提交從developer分支移到Feature分支的開始? 並非100%熟悉git,因此如果需要任何其他信息,請詢問。

嘗試櫻桃挑。 使用cherry pick,您可以將另一個分支的選定提交提交到當前分支。

https://git-scm.com/docs/git-cherry-pick

首先,通常的免責聲明:您要執行的操作(即從分支中刪除提交)意味着重寫歷史記錄 ,因此請謹慎操作。

假設您的歷史記錄如下所示:

A--B--C--D--E develop
         \
          F--G feature

而要“動” 1BCdevelopfeature ,你可以做到這一點的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質數 ”)是新提交 ,它們與BC包含相同的更改,但是由於它們具有不同的父C而具有不同的提交ID。

在這一點上,您可以通過說出從develop分支中刪除BC

git rebase --onto A C
# This means rebase the current branch on top of commit A instead of C

這將導致在develop不再可以到達提交BC

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM