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 rebase工作流的问题吗?_Git_Git Rebase - Fatal编程技术网

我会遇到Git rebase工作流的问题吗?

我会遇到Git rebase工作流的问题吗?,git,git-rebase,Git,Git Rebase,我刚刚了解了rebase,在将提交推送到远程服务器后,我不会对其进行rebase。我想确保我不会炸毁我的存储库 提交历史记录示例 在这里,主分支上的所有提交都可能被推送到origin/master Z是git merge通过将完成的foo分支(Y)与当前主分支(E)合并而进行的自动提交 自foo模块完成后,master进行了一些更新(F和G) 下面是我想如何使用rebase。 是时候对foo分支进行一些更新了,但是它与主分支不同步 简单地git-rebase-master在最新的foo分支

我刚刚了解了rebase,在将提交推送到远程服务器后,我不会对其进行rebase。我想确保我不会炸毁我的存储库

提交历史记录示例
  • 在这里,主分支上的所有提交都可能被推送到origin/master

  • Z
    是git merge通过将完成的foo分支(Y)与当前主分支(E)合并而进行的自动提交

  • 自foo模块完成后,master进行了一些更新(F和G)


下面是我想如何使用rebase。 是时候对foo分支进行一些更新了,但是它与主分支不同步

  • 简单地
    git-rebase-master
    在最新的foo分支上包含F和G提交可以吗

  • 你能修改我的图表,让我看看我的提交历史记录之后会是什么样子吗

  • 假设可以,因为git将检测到
    foo
    已经合并到master,并将
    foo
    快进到
    master
    处于的状态,所以可以这样做。这与
    git merge master
    所做的事情是一样的,也就是说,很简单,foo与master是一样的

    但是,我知道,在这里我只会使用
    git merge
    ,因为这对我来说更有逻辑意义(使用merge进行快进,如果您想确保没有进行真正的合并,它甚至有一个
    --ff only
    标志)。使用rebase的时间是当您正在处理
    foo
    并且有几个提交(并且没有推送)并且有人已经提交给master时。Rebase将使您的分支更新,而无需执行合并提交

  • 我可以,但它将是相同的图表,但是
    foo
    现在指向master,或者更准确地说,是commit
    G
    。不会创建新的提交,因此存储库将保持不变,但移动
    foo
    引用的内容除外


  • 另外,我在一个假的存储库上进行了本地测试,以确保这一点,因为在此场景中使用rebase不是我以前尝试过的东西。

    +1 wuputah,谢谢。我将对rebase和merge进行更多的测试。如果这最终奏效,我会将其标记为已接受:)@macek:我会修改建议,使用merge:使用您真正想要的命令。在这种情况下,他们都会快进,但情况并非总是如此。因此,如果您在一个分支上,并且知道要合并另一个分支的所有内容,请使用“合并”。只有当你真的认为你想移植一个分支时才使用rebase。还要注意的是,你并不总是想在主题分支中使用master的内容。如果您可以完全独立地在自己的分支上开发一个特性/错误修复,然后将其合并到任何需要它的分支(主分支、维护分支、下一版本分支…)中,而不拾取任何无关的内容,那就太好了。
    foo               W---X---Y  
                     /         \
    master  A---B---C---D---E---Z---F---G