Tom*_*mas 17 git version-control merge smartgit
在日常生活中我SmartGit
用作选择的客户.然而,我的团队成员坚持使用git native,非商业GUI.我们发现我们的合并提交看起来有些不同.
在下图中,您可以看到我的示例SmartGit图输出,其中包含:
master
支merge commit
选项simple commit
选项合并其中一个branches(with_merge_branch
)通过连接分支与主线路来实现合并操作.第二个(normal_commit_branch
)没有.
问题是,如何在本机git命令中强制执行这两种行为?即两个提交之间的区别是什么?
Mar*_*Liu 27
两种合并之间的区别仅在提交历史记录中有所不同(因为您在图中显示了日志).
让我们用图表说明.在合并之前假设提交历史如下:
A---B---C---D master
\
E---F---G develop
Run Code Online (Sandbox Code Playgroud)
使用的命令是git merge branchname
.这是合并两个分支的默认方式.
当您通过SmartGit()中的合并提交将develop
分支合并到master
分支时,提交历史将是:git merge develop
A---B---C---D---M master
\ /
E---F---G develop
Run Code Online (Sandbox Code Playgroud)
它使用--squash
选项合并两个分支,使用的命令是git merge branchname --squash
.
生成工作树和索引状态,好像发生了真正的合并(合并信息除外),但实际上没有提交,移动HEAD或记录$ GIT_DIR/MERGE_HEAD(以使下一个git commit命令创建一个合并提交).这允许您在当前分支之上创建单个提交,其效果与合并另一个分支(或章鱼的情况下更多)相同.
当您通过SmartGit()中的简单提交将develop
分支合并到master
分支中时,它将从分支到分支的更改作为新的普通提交(就像发生了真正的合并一样),并且提交历史将是:git merge develop --squash
develop
master
A---B---C---D---M master
\
E---F---G develop
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
21322 次 |
最近记录: |