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 --squashdevelopmaster
A---B---C---D---M master
\
E---F---G develop
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
21322 次 |
| 最近记录: |