master和development分支之间的“git pull”或“git merge”

我有我的master分支和一个develop分支进行一些改变。 我需要把master从变化合并到develop ,但是最终会把所有东西从develop合并到master 。 我有两个不同的工作stream程:

  1. git pull origin master变成develop分支
  2. git merge masterdevelop分支

这是最好的方法,为什么?

小心rebase。 如果你与任何人分享你的开发分支,rebase可以使事情变得混乱。 只有你自己的本地分行才有资格。

经验法则,如果你已经把分支推到原点,不要使用rebase。 相反,使用合并。

这个工作stream程最适合我:

 git checkout -b develop 

…做一些改变…

…通知主人已更新…

…提交更改以开发…

 git checkout master git pull 

把这些变化带回到发展中……

 git checkout develop git rebase master 

…做一些更改…

…承诺他们发展…

将它们合并成主…

 git checkout master git pull git merge develop 

这种事情的最好的办法可能是git rebase 。 它可以让你把主变更放到你的开发分支中,但是把所有的开发工作都放在“最重要的”(稍后在提交日志)上。 当你的新工作完成后,合并回主就非常简单了。

如果你没有与任何人共享开发分支,那么每次master更新时,我都会重新分配它,这样一旦你合并开发回master,那么你将不会合并提交。 这种情况下的工作stream程如下:

 > 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 

以上步骤将确保您的开发分支将永远在主分支的最新变化之上。 一旦你完成了开发分支,并重新分配到主人的最新变化,你可以把它合并回来:

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

我的经验法则是:

分行名称相同 ,否则merge

相同的名字的例子将是masterorigin/master和其他otherRemote/master

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

如果develop是共享的,那么不应该在master重新开始,只需要用--no-ff合并回来。 你正在developmasterdevelop有不同的名字,因为我们希望他们是不同的东西,并保持分离。 不要使它们与rebase相同。