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

Git 重新设置专用分支基础的命令数最少

Git 重新设置专用分支基础的命令数最少,git,rebase,Git,Rebase,我仍在对Git充满信心的过程中,因此我仍在谨慎地处理其中的一些元素 我在工作时为我的私有分支重定基址的命令列表(以便在我完成时它不会过时)是: 我想知道的是,当我想重新设置基础时,是否可以节省一些步骤并执行以下操作: # on the new-feature branch git fetch git rebase origin/develop # continue working.... 或者,当我将我的私人分行与develop合并时,这会导致问题吗?如果可以的话,如果我已经在我的私有分支中完

我仍在对Git充满信心的过程中,因此我仍在谨慎地处理其中的一些元素

我在工作时为我的私有分支重定基址的命令列表(以便在我完成时它不会过时)是:

我想知道的是,当我想重新设置基础时,是否可以节省一些步骤并执行以下操作:

# on the new-feature branch
git fetch
git rebase origin/develop
# continue working....

或者,当我将我的私人分行与develop合并时,这会导致问题吗?如果可以的话,如果我已经在我的私有分支中完成了,我是否需要将origin/develope与develope合并?

所述的获取和重新设置基础就可以了。对于第二个问题,我不太确定你在问什么,所以下面的内容涵盖了所有的基础

(请注意,
git pull
主要是
git fetch
,然后是
git merge
,除非您将其配置为执行
rebase
。我将在下面仅使用
git merge
,前提是您已经完成了足够近期的
fetch

以下是您将得到的结果,假设在
origin/develope
上正在进行的活动以及在commit D1上进行origin/develope的起点:

... - M6                          <- master, origin/master
        \
         D0 - D1                  <- develop, origin/develop
                \
                 N0 - N1          <- HEAD=new_feature
所以现在(使用
HEAD=new_功能,所有功能都指向commit
N1
),您可以:

git做到了这一点,进行了两次新的提交
N0'
N1'

                N0' - N1'         <- HEAD=new_feature
               /
        D2 - D3                   <- origin/develop
       /
D0 - D1                           <- develop
       \
        N0 - N1                   [abandoned]
与以前一样,“被抛弃”的东西可以被遗忘,这为您提供了一个从
origin/develope
末尾开始的清晰的更改历史记录(不管有多少次重新设置)

在任何时候,您都可以,但不必:

git checkout develop && git merge origin/develop && git checkout new_feature
由于您没有在
D1
上添加任何提交,因此这只是快进,因此
develope
指向与
origin/develope
相同的提交

假设您尚未操作本地
开发
,但现在是时候合并到
新功能
,您现在有了以下功能:

                    N0''-N1''-N2' <- HEAD=new_feature
                    /
        D2 - D3 - D4              <- origin/develop
       /
D0 - D1                           <- develop
这就给了你这个(我将理顺
D1
D2
之间的纠结):

但是,如果您不希望合并提交,那么当您执行最终的
合并
时,
develope
指向何处并不重要,因为它只是在快速前进。因此,您可以这样做:

git checkout develop           # set HEAD=develop
# git merge origin/develop     # optional: not needed, but harmless
git merge new_feature          # fast-forward local develop to new_feature
git push origin develop        # and push local develop to origin/develop

首先要弄清楚“我希望得到什么样的提交图”。如果你能画出你想要的图形,那么无论你现在身在何处,都能更容易地找到你想要的图形。

如图所示的抓取和重新设置基础很好。对于第二个问题,我不太确定你在问什么,所以下面的内容涵盖了所有的基础

(请注意,
git pull
主要是
git fetch
,然后是
git merge
,除非您将其配置为执行
rebase
。我将在下面仅使用
git merge
,前提是您已经完成了足够近期的
fetch

以下是您将得到的结果,假设在
origin/develope
上正在进行的活动以及在commit D1上进行origin/develope的起点:

... - M6                          <- master, origin/master
        \
         D0 - D1                  <- develop, origin/develop
                \
                 N0 - N1          <- HEAD=new_feature
所以现在(使用
HEAD=new_功能,所有功能都指向commit
N1
),您可以:

git做到了这一点,进行了两次新的提交
N0'
N1'

                N0' - N1'         <- HEAD=new_feature
               /
        D2 - D3                   <- origin/develop
       /
D0 - D1                           <- develop
       \
        N0 - N1                   [abandoned]
与以前一样,“被抛弃”的东西可以被遗忘,这为您提供了一个从
origin/develope
末尾开始的清晰的更改历史记录(不管有多少次重新设置)

在任何时候,您都可以,但不必:

git checkout develop && git merge origin/develop && git checkout new_feature
由于您没有在
D1
上添加任何提交,因此这只是快进,因此
develope
指向与
origin/develope
相同的提交

假设您尚未操作本地
开发
,但现在是时候合并到
新功能
,您现在有了以下功能:

                    N0''-N1''-N2' <- HEAD=new_feature
                    /
        D2 - D3 - D4              <- origin/develop
       /
D0 - D1                           <- develop
这就给了你这个(我将理顺
D1
D2
之间的纠结):

但是,如果您不希望合并提交,那么当您执行最终的
合并
时,
develope
指向何处并不重要,因为它只是在快速前进。因此,您可以这样做:

git checkout develop           # set HEAD=develop
# git merge origin/develop     # optional: not needed, but harmless
git merge new_feature          # fast-forward local develop to new_feature
git push origin develop        # and push local develop to origin/develop

首先要弄清楚“我希望得到什么样的提交图”。如果你能画出你想要的图表,那么无论你现在身在何处,都能更容易地找到到达目的地的方法。

这是我所希望的更彻底的答案。非常感谢你。你最后一组命令就是我最后一个问题的答案。但我很感谢你提供的额外的清晰。这是我所希望的更彻底的答案。非常感谢你。你最后一组命令就是我最后一个问题的答案。但我很感谢你提供的额外清晰。
                    N0''-N1''-N2'     <- new_feature, HEAD=develop, origin/develop
                    /
...D1 - D2 - D3 - D4
                    N0''-N1''-N2'     <- new_feature
                    /            \
...D1 - D2 - D3 - D4 ------------ M   <- HEAD=develop, origin/develop
git checkout develop           # set HEAD=develop
git merge origin/develop       # fast-forward develop to origin/develop
git merge --no-ff new_feature  # create merge commit M on local develop
git push origin develop        # and push local develop to origin/develop
git checkout develop           # set HEAD=develop
# git merge origin/develop     # optional: not needed, but harmless
git merge new_feature          # fast-forward local develop to new_feature
git push origin develop        # and push local develop to origin/develop