首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何告诉git在执行软重置时包含合并提交?

如何告诉git在执行软重置时包含合并提交?
EN

Stack Overflow用户
提问于 2018-07-30 10:25:19
回答 1查看 232关注 0票数 3

我经常发现自己想压缩本地存储库中的两个或两个以上的提交。我这样做的策略是从软重置开始,然后提交所有经过重新审查的更改。

对于软重置,我使用以下命令:

git reset --soft HEAD~n

其中n是我要重置的提交数。如果我没有将合并提交包含在我想要重置的提交数量中--例如,如果我在当前分支上提交了四次,并且希望软重置头~4,这就可以很好地工作。

但是,假设在我的4次提交之后,我将另一个分支合并到我的当前分支中。Git隐式提交合并更改,并在我执行git日志时显示。现在,如果我想做一个软复位返回到头部~5 (4提交+合并提交),git将忽略合并提交并重置下一次非合并提交,以及我打算重置的4提交。本质上,我应该重新设置头~4- git似乎忽略合并提交时,进行重置。

为什么吉特会这样做?如何将这些合并提交包含在软重置中?

(让我们举一个例子:我已经按时间顺序提交了a,F是一个合并提交。git重置--软头~4将分支重置为A:提交BCDE被重置,提交F不包括在4中。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-07-30 11:46:41

这并不是因为git忽略了合并提交。这是因为~^在Git中的工作方式。

~n的意思是通过第一个parent.If (您将其命名为^n )在层次结构中向上,它意味着从左开始到n th父节点。

如果我们在git存储库中运行git log --graph --pretty=oneline (您给出的示例),可能会有以下内容:

代码语言:javascript
运行
复制
*   da497fa213169e75b9cec382e28561d5e56f6daf (HEAD -> master) f (merge)
|\
| * aaa519bce409d0fb5e187dff6ed82d73d7cd437b (Dev) e
|/
* f537237e48fc7218af288ddc91a02c1e24ea1887 d
* 2c41ee71ee7b9b450cd10eab685e0007fe92b688 c
* 411c96c85a2e34bf798cab5c0e6f4532a5ebfe35 b
* c9d38077a5704df382b0fd0d83d4fcdf7c408f23 a

注意,提交f有两个父级(由于合并提交)。现在,当您说HEAD~4时,它将从左开始在其层次结构中查找4个提交,这将是b。(它不会使用e,因为它在second parent of f中。)

您可以使用git rev-parse命令解析和获取特定的提交id。

例如:如果您运行git rev-parse HEAD~4,您将看到它返回a的提交id。

在我看来,您不需要担心这一点,因为git最终会将您的分支重置为给定的提交id。但是,如果您想要重置您的分支来提交e,那么现在需要告诉它访问它的正确方式。

所以你可以告诉它,选择第二个家长的头,并重置为。

等于:头^2

您还可以将其扩展到通过a通过e,如果您将重置命令设置为:

git reset --soft HEAD^2~3

但在我看来,这在你的情况下并不是必需的。

下面是上面的一个很好的表示,摘自git rev-parse文档。

代码语言:javascript
运行
复制
G   H   I   J
 \ /     \ /
  D   E   F
   \  |  / \
    \ | /   |
     \|/    |
      B     C
       \   /
        \ /
         A

A =      = A^0
B = A^   = A^1     = A~1
C = A^2  = A^2
D = A^^  = A^1^1   = A~2
E = B^2  = A^^2
F = B^3  = A^^3
G = A^^^ = A^1^1^1 = A~3
H = D^2  = B^^2    = A^^^2  = A~2^2
I = F^   = B^3^    = A^^3^
J = F^2  = B^3^2   = A^^3^2

revisions

希望它有帮助:)

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51591873

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档