我有两个分支,即master与development在GitHub的库.我正在开发分支中进行所有开发,如图所示.
git branch development
git add *
git commit -m "My initial commit message"
git push -u origin development
Run Code Online (Sandbox Code Playgroud)
现在我想将development分支上的所有更改合并到master.我目前的做法是:
git checkout master
git merge development
git push -u origin master
Run Code Online (Sandbox Code Playgroud)
如果我遵循的程序是正确的,请告诉我.
来自mercurial,我使用分支来组织功能.当然,我也想在我的历史中看到这种工作流程.
我使用git开始了我的新项目并完成了我的第一个功能.合并该功能时,我意识到git使用快进,即如果可能,它会将我的更改直接应用到主分支并忘记我的分支.
因此,思考未来:我是唯一一个从事这个项目的人.如果我使用git的默认方法(快进合并),我的历史将导致一个巨大的主分支.没有人知道我为每个功能使用了一个单独的分支,因为最后我只有那个巨大的主分支.这看起来不专业吗?
通过这种推理,我不想要快进合并,也不知道为什么它是默认的.这有什么好处的?
我刚刚注意到在 Azure DevOps 中有一个名为semi-linear merge. 我想知道它有什么作用?它是否介于合并策略和变基策略之间(名称为半线性)?如果是这样,有什么优点/缺点?
编辑:从Microsoft Devblog我相信这个选项包括 2 点:
但这不是合并策略吗?
下面的 Git 分支模型似乎非常普遍。 http://nvie.com/posts/a-successful-git-branching-model/
在我们当前的项目中,我们没有开发分支,从 master 分支创建功能/错误修复分支并将它们合并回来并标记所有相关的里程碑(完成的功能/错误修复/发布)。
所以我想知道,拥有一个开发分支有什么好处?