git 如何将分支恢复到合并前的原始状态?

kadbb459  于 2022-12-17  发布在  Git
关注(0)|答案(3)|浏览(507)

我对git还很陌生,我弄得一团糟。
我有两个分支-发布和开发分支。
我的release分支比develop分支落后100次提交,领先10次提交。
我想把发布分支中的10个提交提前提交到开发分支,所以我创建了一个从发布分支到开发分支的拉取请求,但是有一些合并冲突,所以我使用了我发现的以下命令来解决合并冲突:

git checkout release
git pull --rebase origin develop
If there are some conflicts, go to these files to modify them.
git add #your_changes_files
git pull
git push origin release

不幸的是,在我合并了拉取请求之后,我发现我的发布分支与我的开发分支是同步的,也就是说,开发分支后面的100个提交也变成了发布分支的一部分。我希望我的发布分支回到合并之前的状态(100个提交在后面,10个提交在前面)。

sbtkgmzw

sbtkgmzw1#

要返回到以前的状态,您可以执行以下操作:

git checkout release
git reset --hard release@{2.hours.ago}

这会使分支处于两个小时前的状态。选择一个合理的时间跨度,该时间跨度介于你上次提交分支和提交pull --rebase之间。
您也可以调查reflog并选择git pull --rebase完成之前的提交:

git reflog show release
git reset --hard release@{2}    # for example


验证您是否处于正确的提交位置:

git log --pretty=fuller   # observe the commit date; should be before you did the pull --rebase

然后推出正确的分支。

sz81bmfz

sz81bmfz2#

从一开始,您就必须将develop分支的基重置于release分支之上

git checkout develop
git rebase release

这将使你的开发分支提前100次提交,发布分支后0次提交。
所以现在你必须

git reset --hard HEAD~1

在两个分支上执行上述命令

sqxo8psd

sqxo8psd3#

要将发布分支恢复到以前的状态,请使用以下命令

git revert -m 2 <merge_id>
git push origin <release-branch>

相关问题