首页 > 解决方案 > 如何在完全保留分支历史记录的同时将分支状态重置为 master?

问题描述

本质上,我想将我的分支状态重置为 master 而不删除其历史记录并且不附加 master 的历史记录。我想在一次提交中重置分支的状态。

假设master处于状态 A。branch处于状态 B。master有提交<X1>, <X2>, <X3>, ... , <X(N-2)>, <X(N-1)>, <X(N)>branch有提交<X(N-2+1)><X(N-2+2)>因为它是master<X(N-2)>.

(1)我想branch<X(N)>没有<X(N-2)>,附加到我的提交历史记录<X(N-1)>的情况下匹配状态。(2)此外,我希望我的差异显示 0 个文件已更改。我只想要一个新的提交,用状态完全替换我的分支状态。<X(N)>branch<X(N-2+3)><X(N)>

为了做到这一点,我想用<X(N)>状态替换我所有的本地更改,并在没有 --force 的情况下推送。如果没有(1)(2)的副作用,并且不得不强制推送,我无法在网上找到解决方案,这对我来说似乎很危险。

标签: gitgithub

解决方案


嗯...我想你可以

git checkout branch
git rm -r :/:
git checkout master -- :/:
git add :/:
git commit -m "reset state to match master"

我不确定您对 的意思是什么diff,但鉴于您已经描述了目标状态,这diff是给定的 - 这将是您描述的状态与您要与之比较的任何状态之间的差异diff


推荐阅读