考虑以下Git图
master: A - B - C - D - E*
\ /
feature: X - Y - Z
我想在master E 中进行一次新提交,以使 E 与 Z 完全匹配。换句话说,对提交C和D所做的任何更改都将被完全丢弃。但是,我仍然希望保留在主服务器中执行git checkout HEAD~1
会检出 D 的属性。
执行git checkout master; git reset --hard feature
可使工作目录处于正确的状态(即,所有跟踪的内容都与 Z 的内容完全匹配)。但是,并没有按照我的意愿离开历史。
执行类似git checkout feature -- .
几乎的操作,但是保留在 B 或 C 中创建的所有文件,因此不会总是精确匹配 Z 的状态。
对其他类似问题做其他建议中的建议似乎效率很低,因为它涉及多个不同的检出和合并,并且我需要特别避免,因为此操作将在相当大的存储库中频繁进行。
好像几年前有人问过类似的问题并得到了以下答复:https://stackoverflow.com/a/4912267/927604
这个问题的第二部分是:严重吗?除非我缺少主要知识,否则为什么这样做不明显?
谢谢!