用于将远程“origin / develop”合并为“origin / master”的Git工作流程

时间:2013-03-24 16:32:02

标签: git merge git-remote

对于'develop'和'master'的无限生命周期,将GitHub远程'origin / develop'分支合并和标记到远程'origin / master'的最佳工作流程是什么,而远程'master'没有远程领先'发展'?

更新文件(自述文件)和标记'主'的方案......

一切都同意......

$ git log develop ^master
$ git log master ^develop
$ git log master ^origin/master
$ git log master ^origin/develop
$ git log develop ^origin/develop
$ git log develop ^origin/master

切换到'开发'......

**$ git branch**
* develop
  master

编辑README.md文件。

致力于本地回购...

**$ git commit -a**
[develop 47c8393] Updated branching model
 1 file changed, 18 insertions(+), 6 deletions(-)
 rewrite README.md (81%)

将'develop'推向远程'develop'......

**$ git push origin develop**
Counting objects: 5, done.
Delta compression using up to 2 threads.
Compressing objects: 100% (3/3), done.
Writing objects: 100% (3/3), 745 bytes, done.
Total 3 (delta 1), reused 0 (delta 0)
To git@github.com:xxx/xxx.git
   038cb2b..47c8393  develop -> develop

切换到'主'......

**$ git checkout master**
Switched to branch 'master'

将'develop'合并为'master'......

**$ git merge --no-ff develop**
Merge made by the 'recursive' strategy.
 README.md | 18 +++++++++++++++---
 1 file changed, 15 insertions(+), 3 deletions(-)

标记'master'......

**$ git tag -a v3.0.2**

将'master'推送到远程'master'......

**$ git push --tags origin master**
Counting objects: 2, done.
Delta compression using up to 2 threads.
Compressing objects: 100% (2/2), done.
Writing objects: 100% (2/2), 442 bytes, done.
Total 2 (delta 0), reused 0 (delta 0)
To git@github.com:xxx/xxx.git
   038cb2b..5750fa7  master -> master
 * [new tag]         v3.0.2 -> v3.0.2

GitHub现在报告远程'master'比远程'develop'(合并)更早。他们不应该同意吗?...

**$ git log origin/master ^origin/develop**
commit 5750fa78ff81f41ef2327c2f4595f98c0413e245
Merge: 038cb2b 47c8393
Author: 
Date:   

Merge branch 'develop'

如果'master'合并回'develop',HEAD指向'develop',这是一个问题吗?新的“发展”是否应该从新的“主人”中分支出来(不支持“发展”的无限生命期)?

2 个答案:

答案 0 :(得分:2)

在git中,合并/变基在本地发生,所以如果你想让两个遥控器达成一致,你必须首先在本地同意。

在master上创建命令git merge --no-ff develop会在master上创建一个新提交,其中包含develop上的所有提交。 master上的这个新提交与develop上的任何提交都不同,即使develop上只有一个提交。

使用--no-ff始终会创建一个新的提交,因此它始终确保分支不同 - 如果您组合提交,则无论如何组合都是如此。

如果您希望保持分支机构与使用git rebase而非git merge的工作流相同,例如(A Rebase Workflow for Git)。

答案 1 :(得分:0)

您应该合并 local braches,并推出结果。即,合并发展成为主人。如果你不想搞乱本地分支,只为此创建分支,合并一个推回,并删除它们。或者甚至为此创建一个克隆。