Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/github/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Git 如何在完全保留分支历史记录的同时将分支状态重置为master?_Git_Github - Fatal编程技术网

Git 如何在完全保留分支历史记录的同时将分支状态重置为master?

Git 如何在完全保留分支历史记录的同时将分支状态重置为master?,git,github,Git,Github,本质上,我想将我的分支状态重置为master,而不删除其历史记录,也不附加master的历史记录。我想在一次提交中重置分支的状态 假设master处于状态A,分支处于状态B。master已提交,,,,分支已提交,,因为它是在master仍处于时启动的 (1)我希望分支匹配处的状态,而无需将,,附加到我的提交历史记录中(2)此外,我希望我的分支的差异显示0个已更改的文件。我只需要一个新的commit,它将我的分支状态完全替换为状态 为了做到这一点,我想用状态替换我的所有本地更改,然后不使用--fo

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

假设
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
新状态。

标记当前状态并在主状态上重新挂起分支标签?标记当前状态并在主状态上重新挂起分支标签?