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

Car*_*son 240 git workflow

我有我的master分支机构和develop分支机构来处理一些变化.我需要从合并更改masterdevelop,但最终会从一切融合developmaster.我有两个不同的工作流程:

  1. git pull origin master进入develop分支
  2. git merge master进入develop分支

哪种方法最好,为什么?

Ian*_*sky 346

此工作流程最适合我:

git checkout -b develop
Run Code Online (Sandbox Code Playgroud)

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

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

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

git checkout master
git pull
Run Code Online (Sandbox Code Playgroud)

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

git checkout develop
git rebase master
Run Code Online (Sandbox Code Playgroud)

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

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

......把他们合并成主人......

git checkout master
git pull
git merge develop
Run Code Online (Sandbox Code Playgroud)

  • 你开发分支上的`git pull --rebase origin master`要快一点. (11认同)
  • @crdx在将分支合并到本地主服务器之前,有可能将其他分支合并到远程主服务器.您将远程主更改拉到主本地的本地副本.这就是我理解它的方式. (5认同)
  • 这也是我的工作方式,我发现它运作良好.有一件事我不做,那就是在最终`git merge develop'之前的'git pull`.那是什么意思? (2认同)

小智 102

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

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

  • 我回应埃里克的警告.虽然,也可以重新设置自己的远程分支.同时使用rebase和merge,您将了解每个的优点和缺点,并了解何时使用它们. (3认同)

div*_*eek 24

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

  • 很好的建议,假设`develop`不与其他任何人分享. (10认同)

KiR*_*iCH 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
Run Code Online (Sandbox Code Playgroud)

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

> git checkout -b master
> git merge develop
> git branch -d develop
Run Code Online (Sandbox Code Playgroud)