首页 > 解决方案 > 在不合并的情况下使一个 Git 分支与另一个完全相同

问题描述

考虑以下 Git 图

master:   A - B - C - D - E*
               \         /
feature:        X - Y - Z

我想在 master E中进行新的提交,以使E与Z精确匹配。换句话说,在提交 C 和 D 中所做的任何更改都将被完全丢弃。但是,我仍然想保留git checkout HEAD~1在 master 中进行结帐D的属性。

Doinggit checkout master; git reset --hard feature使工作目录处于正确的状态(即,所有跟踪的内容与Z的内容完全匹配)。然而,并没有以我想要的方式离开历史。

做类似的事情git checkout feature -- . 几乎可以工作,但会保留在BC中创建的任何文件,因此它并不总是与Z的状态完全匹配。

做一些在其他类似问题的回答中建议的事情似乎效率很低,因为它涉及到几个不同的签出和合并,这是我需要特别避免的事情,因为这个操作会经常在相当大的存储库上完成。

好像几年前有人问了一个类似的问题并得到了这个回复:https ://stackoverflow.com/a/4912267/927604

这个问题的第二部分是:认真的吗?除非我遗漏了一些重要的东西,否则为什么这不明显呢?

谢谢!

标签: git

解决方案


推荐阅读