Git将开发分支与master合并为生产版本

Asa*_*evo 6 git git-merge

我正在使用Git进行代码版本控制.

我有一个开发分支,我正在做所有的脏开发.

每当我向世界发布一个生产版本时,我都希望将它放在我的主分支下.

问题是每当我合并开发和掌握时,master都会收到所有开发历史记录.

我想保持一切干净,所以分支看起来像这样:

发展

"init commit"

"发展"

"版本1.0"

"bug修复"

"bug修复"

"版本1.1"

"版本1.0"

"版本1.1"

可能吗?如果是的话,怎么样?

更新 我尝试使用Gauthier的答案,但它没有按我的意愿工作.

我采取的步骤如下:1.在master 2中创建一个init commit,切换到开发.3.几乎没有提交发展.4. checkout master 5. git merge development --no-ff

合并成功但是当我在我的存储库中查看高级别时,我看到在我的主分支中我有开发分支的所有历史记录,而我想只有init -----版本1.0.

这是它的外观屏幕截图:

开发部门: 在此输入图像描述

主分支: 在此输入图像描述

Gau*_*ier 4

你知道吗--no-ff

您目前拥有:

o init commit
|
o developing
| 
o Version 1.0
|
o bug fixing
|
o bug fixing
|
o Version 1.1
|
o Version 1.0
|
o Version 1.1  - development - master
Run Code Online (Sandbox Code Playgroud)

(时间向下,如您的示例所示,而不是“做什么”git log和“gitk做什么”)

我的猜测是你不满意,master因为一切都直接到达那里,处于同一水平。

如果您满意:

o init commit
|\
| o developing
|/ 
o Merge branch 'development' - Version 1.0
|\
| o bug fixing
| |
| o bug fixing
|/
o Merge branch 'development' - Version 1.1 - development - master
Run Code Online (Sandbox Code Playgroud)

然后当你想释放 中的内容时development,合并到masterwith --no-ff,并标记:

$ git checkout master
$ git merge development --no-ff
$ git tag "v1.0"
Run Code Online (Sandbox Code Playgroud)

请注意,您应该考虑在以您正在处理的功能命名的分支中工作,而不是在development. 这将导致更好的合并消息,例如“合并分支'killer_feature'”。也许这就是你development已经拥有的,在这种情况下,抱歉。