我开始在特定的工作流程后实现GIT存储库。 工作流程如下:
v0.1 v0.2
/ /
releases-------------------------------------------------
/ | |
main--------------------------[0.1]---------------[0.2]
\ / \ /
development--- / \ /
\ / \ /
feature-ABC feature-XYZ
main
包含最新的稳定代码,其中任何开发人员都可以git checkout -> build -> deploy
main
包含标记,用于标识release
release
分支development
是开发人员的起始分支。在commit
构建服务器构建/部署解决方案到development environment
development
分支,并在使用development
的分支命名完成时推回feature/name
或hotfix/bugname
development
变得稳定后,它会合并回main
并且版本标记并部署in staging
release
现在,为了采用这个工作流程,我创建了一个开发人员应该执行的GIT commands
序列。你能验证一下它的正确性吗?
此外,如何确保主要和开发始终正确同步?
$ git checkout master
$ git branch -b development
$ git push -u origin development
$ git checkout development
$ git branch -b feature/my_feature
... iteration ...
$ git add ...
$ git commit -m "My Comment"
$ git push origin feature/my_feature
... iteration ...
$ git checkout development
$ git merge feature/my_feature
... resolve conflicts ...
$ git commit -m "Merge from feature/my_feature"
$ git push -u origin development
$ git checkout master
$ git merge development
... resolve conflicts ...
$ git tag -a v0.1 -m "my version 0.1"
$ git commit -m "Merge from development"
$ git push -u origin master --tags
$ git checkout master
$ git branch v0.1
$ git commit -m "my version 0.1"
$ git push -u origin v0.1
答案 0 :(得分:1)
我不知道我们可以100%确定地说这些命令对于所有情况都是“正确的”,认识到图中的事件是好的和线性的,但发展现实可能不是。
尽管如此,在我看来,跳出来的唯一问题是:
>>> x = 10
>>> def foo():
... print(x)
... x += 1
>>> foo()
Traceback (most recent call last):
...
UnboundLocalError: local variable 'x' referenced before assignment
提交将失败,因为它不包含任何更改。虽然我怀疑需要$ git checkout master
$ git branch v0.1
$ git commit -m "my version 0.1"
$ git push -u origin v0.1
语句(带注释的标签可能对你要做的事情更有意义),如果你必须有一个提交,那么你将不得不通过{{1说服git创建一个的参数。
答案 1 :(得分:1)
这些命令可以满足您计划使用的工作流程。但是你可以参考一些小东西(它也可以保持原样):
1. git push
-u
只需要第一次推送(设置为上游)。
2.发布版本始终存在于release
分支中。因此,您可以将main
分支合并到release
分支,而不是创建分支v0.1
,v0.2
等。
要检查main
和development
是否同步,您可以使用git log main..development
。如果它有输出,则意味着development
分支有提交需要合并到main
分支。