我想从master那里获取更新到我的开发分支,我试图做的是应用以下命令:
git checkout master
git pull
git checkout develop
git rebase master
通过执行以上命令,我得到以下警告:
首先,倒回头以在其上回放您的作品...
此外,我不确定是否应该执行rebase
或merge
来完成开发工作。我在网上提到了几篇文章,其中一篇建议为
变基是更改应如何从层次结构的顶部向下传递,而合并则是更改如何向上流动。 (Link)
在Microsoft Docs中,建议在以下情况下重新设置基准(例如,其显示将develop
重新定标到master
上):
建议的方法是允许根据您已有的本地更改 制作但尚未与他人共享,但一旦共享就合并 和别人一起改变。这样可以避免在重写历史记录时遇到麻烦 仍然让您在开发自己的产品时轻松赶上变化 本地编码。
我想知道从master
分支进行最新更改以发展分支的最佳方法。
答案 0 :(得分:2)
以我的拙见,除非您是一个有信心的git用户git rebase (-i)
,否则会导致更多问题,甚至无法解决。
请注意,例如,他们的git flow教程中的GitHub和Atlassian都没有使用重定基。
当然git flow只是一种方法,Atlassian在他们的Feature Branch Workflow文章中写道:
一旦Bill准备好接受拉取请求,就需要有人将功能合并到稳定的项目中(这可以由Bill或Mary完成):
git checkout master git pull git pull origin marys-feature git push
此过程通常导致合并提交。一些开发人员之所以喜欢它,是因为它就像该功能与其余代码库的象征性结合。但是,如果您偏爱线性历史记录,则可以在执行合并之前将特征重新设置到母版的顶端,从而实现快速合并。
我是合并提交的支持者,我鼓励您不要使用重新定级。
答案 1 :(得分:1)
首先,倒带头在上面回放您的作品...
那不是警告。这是重新设置基准的正常输出。如果有警告,git会告诉您(WARNING:
就像您看到CONFLICT:
一样)。
注意:快速前进的基准操作并不会做任何工作-不会合并,也不会倒退HEADS。因此,即使您使用git rebase
对于在合并还是变基之间进行选择,在大多数情况下都是惯例。遵循您的团队希望您使用的约定-如果他们主要将更改基于基础,然后执行。
如果没有约定,请按照您的直觉告诉您。合并会根据时间保留提交的顺序,清楚地显示出发散和收敛,就像现实生活中发生的那样。 Rebase使历史记录看起来无缝且整洁(通过编辑历史记录,因此为什么不应该对其他牵引的分支进行重新定位)。
我尝试使用rebase。我喜欢干净的历史记录-这个人更改了ABC,然后又更改了XYZ。
答案 2 :(得分:0)
我会避免变基。如果您直接对母版进行了一些提交(不是一个好主意),并且需要带他们进行开发-
git checkout develop
git merge master