主数据库和开发分支之间的“git pull”或“git merge”

时间:2010-12-29 17:55:55

标签: git workflow

我有master分支和develop分支,用于处理一些更改。我需要将master中的更改合并到develop,但最终会将develop中的所有内容合并到master。我有两个不同的工作流程:

  1. git pull origin master进入develop分支
  2. git merge master进入develop分支
  3. 这是最好的方法,为什么?

6 个答案:

答案 0 :(得分:342)

此工作流程最适合我:

git checkout -b develop

......做一些改变......

...通知大师已更新......

...提交改变以发展......

git checkout master
git pull

......让这些变化重新发展......

git checkout develop
git rebase master

......做出更多改变......

......让他们发展......

...将它们合并为主...

git checkout master
git pull
git merge develop

答案 1 :(得分:101)

小心使用rebase。如果您与任何人共享您的开发分支,rebase可能会弄乱一切。 Rebase仅适用于您自己的本地分支机构。

经验法则,如果您将分支推到原点,请不要使用rebase。相反,请使用合并。

答案 2 :(得分:23)

此类事情的最佳方法可能是git rebase。它允许您将更改从master转移到开发分支,但是将所有开发工作“置于”(稍后在提交日志中)来自master的内容。当你的新工作完成后,合并回主人就非常简单了。

答案 3 :(得分:5)

如果你不与任何人共享开发分支,那么每次master更新时我都会重新设置它,这样你就可以在将开发合并到master之后的整个历史记录中进行合并提交。这种情况下的工作流程如下:

> git clone git://<remote_repo_path>/ <local_repo>
> cd <local_repo>
> git checkout -b develop
....do a lot of work on develop
....do all the commits
> git pull origin master
> git rebase master develop

以上步骤将确保您的开发分支始终位于主分支的最新更改之上。一旦你完成了开发分支并且它已经重新定位到master上的最新更改,你可以将它合并回来:

> git checkout -b master
> git merge develop
> git branch -d develop

答案 4 :(得分:1)

我的经验法则是:

  对于同名的分支机构

rebase,否则为merge

相同名称的示例包括masterorigin/masterotherRemote/master

如果develop仅存在于本地存储库中,并且始终基于最近的origin/master提交,则应将其称为master,并直接在那里工作。它简化了你的生活,并呈现了实际的东西:你正在master分支上直接开发。

如果共享develop,则不应在master上进行重新定位,只需将--no-ff合并回develop。你是在master开发的。 developrebase有不同的名称,因为我们希望它们是不同的东西,并保持独立。不要与android.support.v4.util.ArrayMap相同。

答案 5 :(得分:0)

我更喜欢将 git pull origin <branch_name> 用于我希望合并到的分支。 我实际上从未使用过 git merge <branch_name>

原因,当我开始使用它时,我曾经在 GitLab 中遇到过它的错误。 但现在它也更合乎逻辑……因为 git pull 确实: (a) git fetch (b) git merge

2 个命令 vs 一个;使保持工作快速进行的应用程序毫不费力。

PS:如果您不确定会发生什么,最好在那里使用“分解”命令;)