对于'开发'和'主'来说,无限的生命周期,合并和标记GitHub远程' origin/develop '分支到远程' origin/master '而没有远程' master '领先于远程' develop '的最佳工作流程是什么?
更新文件(自述)并标记' 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
切换到' develop '…
**$ git branch**
* develop
master
编辑README。md文件。
Commit to local repo…
**$ git commit -a**
[develop 47c8393] Updated branching model
1 file changed, 18 insertions(+), 6 deletions(-)
rewrite README.md (81%)
Push ' develop ' to remote ' 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
切换到' master '…
**$ 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(-)
标记"大师"…
**$ git tag -a v3.0.2**
Push ' master ' to remote ' 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 '(合并)领先1。
**$ git log origin/master ^origin/develop**
commit 5750fa78ff81f41ef2327c2f4595f98c0413e245
Merge: 038cb2b 47c8393
Author:
Date:
Merge branch 'develop'
如果' master '被合并回' develop ', HEAD指向' develop ',这有问题吗?是否应该从新的"master"派生出一个新的"develop"(不支持"develop"的无限寿命)?
在git中,合并/重基发生在本地,所以如果你想让两个远程一致,你必须首先使它们在本地一致。
在master上执行命令git merge --no-ff develop
,在master
上创建一个包含develop
上所有提交的新提交。master
上的新提交与develop
上的任何提交都不一样,即使develop
上只有一个提交。
使用--no-ff
总是创建一个新的提交,所以它总是确保分支是不同的——如果你合并提交,无论如何,也是如此。
如果你想保持分支相同,请查看使用git rebase
而不是git merge
的工作流,例如(a Rebase workflow for Git)。
您应该合并本地分支,并推出结果。即,合并发展成大师。如果您不想弄乱本地分支,请为此创建分支,进行合并和回推,然后删除它们。或者甚至为这个创建一个克隆。