我会遇到Git rebase工作流的问题吗?
我刚刚了解了rebase,在将提交推送到远程服务器后,我不会对其进行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分支
- 在这里,主分支上的所有提交都可能被推送到origin/master
是git merge通过将完成的foo分支(Y)与当前主分支(E)合并而进行的自动提交Z
- 自foo模块完成后,master进行了一些更新(F和G)
下面是我想如何使用rebase。 是时候对foo分支进行一些更新了,但是它与主分支不同步
git-rebase-master
在最新的foo分支上包含F和G提交可以吗foo
已经合并到master,并将foo
快进到master
处于的状态,所以可以这样做。这与git merge master
所做的事情是一样的,也就是说,很简单,foo与master是一样的
但是,我知道,在这里我只会使用git merge
,因为这对我来说更有逻辑意义(使用merge进行快进,如果您想确保没有进行真正的合并,它甚至有一个--ff only
标志)。使用rebase的时间是当您正在处理foo
并且有几个提交(并且没有推送)并且有人已经提交给master时。Rebase将使您的分支更新,而无需执行合并提交
foo
现在指向master,或者更准确地说,是commitG
。不会创建新的提交,因此存储库将保持不变,但移动foo
引用的内容除外
另外,我在一个假的存储库上进行了本地测试,以确保这一点,因为在此场景中使用rebase不是我以前尝试过的东西。+1 wuputah,谢谢。我将对rebase和merge进行更多的测试。如果这最终奏效,我会将其标记为已接受:)@macek:我会修改建议,使用merge:使用您真正想要的命令。在这种情况下,他们都会快进,但情况并非总是如此。因此,如果您在一个分支上,并且知道要合并另一个分支的所有内容,请使用“合并”。只有当你真的认为你想移植一个分支时才使用rebase。还要注意的是,你并不总是想在主题分支中使用master的内容。如果您可以完全独立地在自己的分支上开发一个特性/错误修复,然后将其合并到任何需要它的分支(主分支、维护分支、下一版本分支…)中,而不拾取任何无关的内容,那就太好了。
foo W---X---Y
/ \
master A---B---C---D---E---Z---F---G