Git 如何在完全保留分支历史记录的同时将分支状态重置为master?
本质上,我想将我的分支状态重置为master,而不删除其历史记录,也不附加master的历史记录。我想在一次提交中重置分支的状态 假设Git 如何在完全保留分支历史记录的同时将分支状态重置为master?,git,github,Git,Github,本质上,我想将我的分支状态重置为master,而不删除其历史记录,也不附加master的历史记录。我想在一次提交中重置分支的状态 假设master处于状态A,分支处于状态B。master已提交,,,,分支已提交,,因为它是在master仍处于时启动的 (1)我希望分支匹配处的状态,而无需将,,附加到我的提交历史记录中(2)此外,我希望我的分支的差异显示0个已更改的文件。我只需要一个新的commit,它将我的分支状态完全替换为状态 为了做到这一点,我想用状态替换我的所有本地更改,然后不使用--fo
master
处于状态A,分支
处于状态B。master
已提交
,
,
<代码>,
,
<代码>分支已提交
,
,因为它是在master
仍处于
时启动的
(1)我希望分支
匹配
处的状态,而无需将
,
,
附加到我的提交历史记录中(2)此外,我希望我的分支的差异显示0个已更改的文件。我只需要一个新的commit
,它将我的分支状态完全替换为
状态
为了做到这一点,我想用
状态替换我的所有本地更改,然后不使用--force进行推送。我一直无法在网上找到解决这类问题的方法,而不会有(1)和(2)的副作用,而且不得不用力推,这对我来说似乎很危险。嗯。。。我想你可以
git checkout branch
git rm -r :/:
git checkout master -- :/:
git add :/:
git commit -m "reset state to match master"
我不确定你所说的diff
是什么意思,但是既然你已经描述了目标状态,diff
是一个给定的-它将是你所描述的状态之间的差异,以及你与diff
进行比较的任何东西。。。我想你可以
git checkout branch
git rm -r :/:
git checkout master -- :/:
git add :/:
git commit -m "reset state to match master"
我不确定你所说的diff
是什么意思,但鉴于你已经描述了目标状态,diff
是一个给定的-它将是你描述的状态之间的差异,无论您与diff
比较什么,您都可以在分支
和主
之间创建一个diff,并将其作为一个提交应用到分支
:
git diff --binary HEAD..master | git apply --index
这将更新工作目录和索引。然后,您可以git提交
新状态。您可以在分支
和主
之间创建差异,并将其作为一个提交应用到分支
:
git diff --binary HEAD..master | git apply --index
这将更新工作目录和索引。然后可以git commit
新状态。标记当前状态并在主状态上重新挂起分支标签?标记当前状态并在主状态上重新挂起分支标签?