我正在为我正在开发的网络应用项目开发Git工作流程。我已经使用Git好几年了,但只是作为一个独立的开发人员。我已将一组程序放在一起,昨天在HN上发表了这篇文章:http://sandofsky.com/blog/git-workflow.html
根据文章,我调整了我的程序,并希望得到一些反馈。我想确保我正确地解释这篇文章,而不是对未来的问题做出贡献。 根据相关文章以及提供良好工作标准的愿望,以下程序是否存在任何问题?
分支:主人
分支:暂存
分公司:生产
答案 0 :(得分:4)
您写道:
如果“
dev_newfeaturename
”分支中的更改更复杂,则需要在历史记录中保留多个提交:
- 切换到“
dev_newfeaturename
”分支:git checkout dev_newfeaturename
- 将所有已更改的“
master
”代码重新整合到“dev_newfeaturename
”分支中:git rebase --interactive master
- 要通过组合提交来清理历史记录,请将操作从“pick”更改为“squash”,这会将第二次提交压缩到第一次提交
- 切换到“
master
”分支:git checkout master
- 将更改推送到远程“
master
”:git push origin master
我认为您忘记了将“dev_newfeaturename
”快速合并到“master
”中:
rebase允许您在“dev_newfeaturename
”之上重播“master
”,清理该过程中的提交。那很好。
但是如果你想将master推回到远程,master需要在其历史记录中清理提交:`git merge dev_newfeaturename
关于每个开发状态的分支(staging,prod),我不推荐这种方法,除非你在这些分支中积极生成新的提交。
请记住您引用的文章中关于no-ff的句子:
–no-ff
唯一剩下的论据是“文档” 人们可以使用合并提交来表示生产代码的最后部署版本 这是反模式。使用标签。