Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/image/5.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 rebase分支名称_Git_Rebase - Fatal编程技术网

更改位于顶部的git rebase分支名称

更改位于顶部的git rebase分支名称,git,rebase,Git,Rebase,如果我运行此命令: git-rebase-develope我在分支机构feature/my-awesome feature 发生了什么: 1.develope更改放在feature/my awesome feature更改之上 2.feature/my awesome feature更改放在develop更改之上 这个命令会给人一种印象,第一个语句是正确的,因为我在特性分支上,我说的是在它上面开发rebase 但我认为事实正好相反,第二种说法是正确的。。。当我在功能分支上时,我正在合并开发更改,

如果我运行此命令:

git-rebase-develope
我在分支机构
feature/my-awesome feature

发生了什么:

1.
develope
更改放在
feature/my awesome feature
更改之上

2.
feature/my awesome feature
更改放在
develop
更改之上

这个命令会给人一种印象,第一个语句是正确的,因为我在特性分支上,我说的是在它上面开发rebase

但我认为事实正好相反,第二种说法是正确的。。。当我在功能分支上时,我正在合并开发更改,然后将此分支的所有更改放在这些更改之上


哪个说法正确?在将功能分支的PR打开到开发分支之前,这是重新设置分支基础的正确方法吗?

如果您重新设置基础,则您正在更改分支的“基础”。从要重设基础的分支(
develope
)开始,然后在新的基础上从分支的旧版本中选择每个提交,从第一个不同的提交(第一个尚未在
develope
中的提交)开始,直到最后一个提交

因此,鉴于以下情况:

A -> B -> C -> D (develop)
       \
        > E -> F (feature/my-awesome-feature)
如果您当前签出了
feature/my awesome feature
,并且运行了
git-rebase-develope
,那么(假设没有冲突),您的
feature/my awesome feature
将以如下方式结束:

A -> B -> C -> D (develop) -> E' -> F' (feature/my-awesome-feature)
请注意,
E'
F'
将具有不同的哈希值(即,它们与
E
F
不同),因为您已更改了这些提交的历史记录

这基本上就是:

假设存在以下历史记录,且当前分支为“主题”:

从这一点开始,将显示以下命令之一的结果:

git rebase master
git rebase master topic
将是:

              A'--B'--C' topic
             /
D---E---F---G master

因此,在您看来,我们将我们想要的分支重新设定为我们正在进行的分支是正确的。。。因此,
develope
继续使用我们的
功能/我最棒的功能
,而不是相反的方法,例如
git checkout develope
git rebase功能/我最棒的功能
@Cameron通常你会想签出你的功能分支,在你的主分支上重新设置基础(或合并),创建你的PR,然后将PR合并到您的主分支中。@Cameron-如果您签出主分支并重新设置其基础,您将更改其历史记录,这可能会对正在处理问题分支的任何其他人造成严重破坏。我现在有点困惑。。。我们不是在重新定主。。。我们正在检查功能分支,然后在其上重新设置开发,而不是检查功能分支并在其上重新设置功能…@Cameron-那么您有三个分支<代码>掌握,
开发
功能
?没有一种正确的方法可以使用git,但通常只需要重新设置功能分支的基础。您通常会避免对多个开发人员共享的任何分支进行重定基址。这是因为rebase重写了该分支的历史。如果
develope
在多个开发人员/分支之间共享,那么如果您重写它的历史记录,它将导致非常非常头疼的问题。
              A'--B'--C' topic
             /
D---E---F---G master