如何安全地撤消已经在远程主分支中的提交&把他们带到另一个分支?

时间:2016-04-18 08:26:38

标签: git version-control bitbucket git-branch

我现在正在开发一个功能,我想在featureX分支中进行,但我忘了创建该分支并结帐。这导致了一个问题,因为我的团队远程主分支已经提交了2个(我们正在使用BitBucket),如下所示:

enter image description here

如何将d40ef795e13fd7移动到featureX分支中,以便我可以继续处理该featureX分支并从主分支中删除该2个提交而不会丢失最近的我的队友创建的提交(29ac4fb..1606c1a)?

我在this answer内尝试第一个选项,但它对我不起作用。我也在git cherry-pick分支内部featureX尝试(从主人那里分支) - 对我来说也不起作用。

1 个答案:

答案 0 :(得分:1)

最简单的方法是恢复。

<强> git revert <SHA-1>

撤消git提交。还原给定提交所做的更改。

<强> reset and force push

# reset the branch to the desired commit
git reset <SHA-1>

还有其他方法,但不建议使用它们git push -fgit rebasegit filter-branch

如何将所需的提交添加到不同的分支。

git cherry-pick <SHA-1>...<SHA-1>

  

在master分支的顶端应用commit提交的更改,并使用此更改创建一个新的提交。

...的语法是提交范围。从开始(排除)到最后一个提取所有提交。

enter image description here

宣读完整的git cherry-pick documentation for all the options you can use