Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/20.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 - Fatal编程技术网

Git 更改源提交

Git 更改源提交,git,Git,我的结构如下: A-B-C-D (branch-C) \ \ \ H (branch-A) \ \-E-F-G (branch-B) 我想这样: A-B-C-D (branch-A and branch-C) \ \ \ \-E-F-G-H (branch-B) 我该怎么做 git checkout branch-B git cherry-pick branch-A # you could also

我的结构如下:

A-B-C-D (branch-C)
  \    \
   \    H (branch-A)
    \
     \-E-F-G  (branch-B)
我想这样:

A-B-C-D  (branch-A and branch-C)
  \    
   \    
    \
     \-E-F-G-H  (branch-B)
我该怎么做

git checkout branch-B
git cherry-pick branch-A  # you could also specify H directly
现在你有了H和G

git checkout branch-A
git reset --hard HEAD^    # you could also specify D directly
                          # HEAD is the current commit; HEAD^ is the previous one
现在您已经从包含A-B-C-D的分支中删除了H

注意,这只有在开始时有一些指向H和G的分支引用时才有意义,因为git中的提交对象合并了它;“移动”提交并不意味着什么,因为它改变了您的分支

现在你有了H和G

git checkout branch-A
git reset --hard HEAD^    # you could also specify D directly
                          # HEAD is the current commit; HEAD^ is the previous one
现在您已经从包含A-B-C-D的分支中删除了H


注意,这只有在开始时有一些指向H和G的分支引用时才有意义,因为git中的提交对象合并了它;“移动”提交并不意味着什么,因为它会更改您的分支。

假设您已签出分支-B:

git cherry-pick branch-A
git push . branch-C:branch-A -f

您现在可以选择删除分支-A或分支-C-或同时保留两者。

假设您已签出分支-B:

git cherry-pick branch-A
git push . branch-C:branch-A -f

现在,您可以选择删除分支A或分支C,或者保留两者。

到OP:用在这些提交时开始的分支替换G和H。(这就是Borealid在最后一段中的意思,但我认为这样更清楚一些。)到OP:用从这些提交开始的分支替换G和H。(这就是Borealid在最后一段中的意思,但我认为这样更清楚一些。)如果没有分支名称,这不是很有用——OP很有可能最终会移动一个他不想移动的分支。也许给从G和H开始的分支命名?这将移动分支A,并且您将“丢失”B-C-D。它们仍然在那里,但不会有分支指向它们。没有分支名称,这不是很有用-OP很有可能最终移动他不想移动的分支。也许给从G和H开始的分支命名?这将移动分支A,您将“丢失”B-C-D。它们仍然在那里,但不会有分支指向它们。我已经冒昧地为您标记了几个分支;这将有助于更好地回答问题。添加分支C使其变得更好:)我冒昧地为您标记了几个分支;这将有助于更好地回答问题。添加了分支C以使其更好:)