Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/25.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将中间提交替换为另一个分支提交_Git_Git Branch_Git Merge_Branching And Merging - Fatal编程技术网

Git将中间提交替换为另一个分支提交

Git将中间提交替换为另一个分支提交,git,git-branch,git-merge,branching-and-merging,Git,Git Branch,Git Merge,Branching And Merging,想要移动东西: A--B--C--D--E--F--G--H (master) \ \ L--M--N--O--P (feature) 希望删除D-E-F提交并替换为L-M-N-O-p。最终回购应为 A--B--C--L--M--N--O--P--G--H (master) 不幸的是,我的Git还不够强大,有什么帮助吗?这应该可以做到:Git-rebase-F-master--on-feature 这会告诉Git将F..master之间的

想要移动东西:

A--B--C--D--E--F--G--H   (master)
      \
       \
        L--M--N--O--P    (feature)
希望删除D-E-F提交并替换为L-M-N-O-p。最终回购应为

A--B--C--L--M--N--O--P--G--H  (master)

不幸的是,我的Git还不够强大,有什么帮助吗?

这应该可以做到:
Git-rebase-F-master--on-feature

这会告诉Git将
F..master
之间的提交移动到
功能上。现在你的回购协议看起来像

A--B--C--D--E--F
       \
        \
         L--M--N--O--P          (feature)
                      \
                       \
                        G--H    (master)
然后只需
git分支-d功能
来清理旧的
功能
分支,git的垃圾收集将处理
d--E--F


有关各种更详细的信息和一些好的示例图表,请通读。

您的历史记录如下所示:

$ git log --oneline  --graph --all
* 3e680f3 H
* afd87a5 G
* 2583117 F
* 6f44661 E
* 37ba1cd D
| * 7c8d70f P
| * b953a6f O
| * 7e2f28e N
| * 95fc381 M
| * 7ca7fe9 L
|/
* c30b405 C
* 70fad86 B
* 18aedd7 A
* c32e786 Initial commit
合并
功能
分支

$ git me feature
Merge made by the 'recursive' strategy.
 l | 0
 m | 0
 n | 0
 o | 0
 p | 0
 5 files changed, 0 insertions(+), 0 deletions(-)
 create mode 100644 l
 create mode 100644 m
 create mode 100644 n
 create mode 100644 o
 create mode 100644 p
对我来说,
c32e786
是初始提交的哈希:

$ git rebase -i  c32e786
您将看到一个包含提交列表的文本编辑器。删除不需要的提交,并根据需要对其余的提交重新排序:

$ git log --oneline
ff6a364 H
4a9d73c G
7c8d70f P
b953a6f O
7e2f28e N
95fc381 M
7ca7fe9 L
c30b405 C
70fad86 B
18aedd7 A
c32e786 Initial commit