master和development分支之间的“git pull”或“git merge”
我有我的master
分支和一个develop
分支进行一些改变。 我需要把master
从变化合并到develop
,但是最终会把所有东西从develop
合并到master
。 我有两个不同的工作stream程:
-
git pull origin master
变成develop
分支 -
git merge master
成develop
分支
这是最好的方法,为什么?
小心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
。
相同的名字的例子将是master
, origin/master
和其他otherRemote/master
。
如果develop
只存在于本地存储库中,并且始终基于最近的origin/master
提交,则应将其称为master
,并直接在那里工作。 它简化了你的生活,并呈现出事实:你直接在master
分支上发展。
如果develop
是共享的,那么不应该在master
重新开始,只需要用--no-ff
合并回来。 你正在develop
。 master
和develop
有不同的名字,因为我们希望他们是不同的东西,并保持分离。 不要使它们与rebase
相同。