git - 如何在完全保留分支历史记录的同时将分支状态重置为 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)的副作用,并且不得不强制推送,我无法在网上找到解决方案,这对我来说似乎很危险。
解决方案
嗯...我想你可以
git checkout branch
git rm -r :/:
git checkout master -- :/:
git add :/:
git commit -m "reset state to match master"
我不确定您对 的意思是什么diff
,但鉴于您已经描述了目标状态,这diff
是给定的 - 这将是您描述的状态与您要与之比较的任何状态之间的差异diff
。
推荐阅读
- r - 如何从 R 中的 For 循环中导出多个模型(列表对象无法同化 data.frame)
- javascript - 我们可以省略 JavaScript IIFE 的主要括号吗?
- python - 出现错误时如何使此循环继续?
- python - 如何获取已编译成二进制.exe的python脚本文件路径?
- scala - 在 Scala 中将一个(未来的列表)转换为(未来的列表)
- oauth-2.0 - 谷歌刷新令牌生命周期
- asp.net-mvc - 为什么没有视图的区域内的操作会从根控制器渲染视图?
- syntax - 为什么我不能声明具有元组参数匹配的特征函数?
- r - R - 将值输入到列的下一行
- ios - 将文本添加到 UIImage SWIFT IOS 11