我有我的主分支和一个开发分支的工作在一些变化。我需要将更改从master合并到develop,但最终会将所有内容从develop合并到master。我有两个不同的工作流程:
Git将原始主机导入开发分支 Git将master合并到开发分支
哪一种方法是最好的,为什么?
我有我的主分支和一个开发分支的工作在一些变化。我需要将更改从master合并到develop,但最终会将所有内容从develop合并到master。我有两个不同的工作流程:
Git将原始主机导入开发分支 Git将master合并到开发分支
哪一种方法是最好的,为什么?
当前回答
小心变基。如果你与任何人共享你的开发分支,rebase会把事情搞得一团糟。Rebase只对你自己的本地分支有好处。
经验法则,如果你已经将分支推到原点,就不要使用rebase。相反,使用merge。
其他回答
我更喜欢使用git拉origin <branch_name>到我要合并到的分支。 事实上,我从未使用git merge <branch_name>
原因是,当我开始使用它的时候,我在GitLab中遇到了一个bug。 但现在也更合乎逻辑了…因为git pull做了: (a) git fetch (b) git合并
2个命令vs 1个命令;让工作快速进行变得简单。
PS:如果你不确定会发生什么,最好使用“分解”命令;)
我的经验法则是:
对具有相同名称的分支重新赋基,否则合并。
相同名字的例子有master, origin/master和otherRemote/master。
如果develop只存在于本地存储库中,并且总是基于最近的origin/master提交,那么您应该将其称为master,并直接在那里工作。它简化了您的生活,并如实呈现事物:您直接在主分支上开发。
如果develop是共享的,它不应该基于master重新创建,而应该使用——no-ff将其合并回master中。你是在发展中发展。掌握和发展有不同的名称,因为我们希望它们是不同的东西,并保持分离。不要用rebase使它们相同。
这类事情的最佳方法可能是git rebase。它允许你从master中将更改拉到你的开发分支中,但将所有的开发工作“放在”master的内容之上(稍后在提交日志中)。当您的新工作完成后,合并回主系统就非常简单了。
这个工作流程最适合我:
git checkout -b develop
...做一些改变…
...通知主版已更新…
做出改变来发展…
git checkout master
git pull
...将这些变化带回开发中……
git checkout develop
git rebase master
...做更多的改变…
让他们发展…
...将它们合并到主…
git checkout master
git pull
git merge develop
小心变基。如果你与任何人共享你的开发分支,rebase会把事情搞得一团糟。Rebase只对你自己的本地分支有好处。
经验法则,如果你已经将分支推到原点,就不要使用rebase。相反,使用merge。