为什么每次合并一个分支后,我的git日志图会再增长一行?

为什么每次合并一个分支后,我的git日志图会再增长一行?,git,merge,branch,Git,Merge,Branch,我习惯于使用git log--oneline--graph--decoration--all作为别名git ll来查看终端中的提交图 但是,每当我将develope合并到master时,有一个问题让我感到困惑。 上述命令的输出可能如下所示: * 0d1bf7b (HEAD -> master) Fix typo * f843224 Merge 'develop' to 'master' |\ * | d673b76 (origin/master) Remove console.log

我习惯于使用
git log--oneline--graph--decoration--all
作为别名
git ll
来查看终端中的提交图

但是,每当我将
develope
合并到
master
时,有一个问题让我感到困惑。 上述命令的输出可能如下所示:

* 0d1bf7b (HEAD -> master) Fix typo
*   f843224 Merge 'develop' to 'master'
|\
* | d673b76 (origin/master) Remove console.log for license information
* | 5080afc Remove all http url in production
* |   f28e74b Merge branch 'develop'
|\ \
* \ \   75c5b90 Merge branch 'develop'
|\ \ \
* \ \ \   ec189e6 Merge branch 'develop'
|\ \ \ \
* \ \ \ \   eb79c75 Merge branch 'develop'
|\ \ \ \ \
* \ \ \ \ \   74631ef Merge branch 'develop'
|\ \ \ \ \ \
| | | | | | | * f7a4155 (light) Fix typo
| | | | | | | *   1d6c411 Merge 'develop' to 'light'
| | | | | | | |\
| | | | | | | |/
| | | | | | |/|
| | | | | | * | 3715f47 (develop) Finish GroupCard in Setting page
| | | | | | | * e606e68 (origin/light) Remove console.log for license information
| | | | | | | * 676774c Remove all http url in production
| | | | | | | * c1bef16 Fix api url error
您可以看到,在我将
develope
合并到
master
后生成的行太多。现在这不是一个大问题,但总有一天,它会变成太多的线,太多的线,太多的线,太多的线,太多的线,太多的线,太多的线,太多的线,太多的线,太多的线,太多的线,太多的线,太

那我有什么做错的吗? 你们有没有遇到过这样的问题? 你是怎么处理的


[2019/05/20编辑] 谢谢你们。我感谢你善意的回答

我想解决我的问题,把它说清楚一点。 我使用一些GUI工具,如SourceTree,它显示git日志,如下所示。 正如您所看到的,在这个图中没有很多复杂的行具有相同的存储库

那么,如果我想在命令行界面中显示这样的图形,有可能吗

这就是存在的原因(对于尚未推动的开发的本地提交)。
这将有助于保持历史的线性,而不是git日志显示每个开发合并在其各自的轨道上

那么,如果我想在命令行界面中显示这样的图形,有可能吗

在命令行中,可以通过添加以下内容来避免所有这些额外的行:


当然,您应该在适当的地方使用重基和挤压。 此外,您可以尝试以下--无合并选项,如:


git log--oneline--graph--decoration--all--no merges

我在这里没有看到任何意外的东西。您反复将
develop
合并到
master
中,但不能反过来。因此,该图显示每个合并提交在
develope
中具有不同的分支父级。如果你展示完整的图表,你可能会看到所有的父母都在同一个分支上。从发展到光明有很多合并吗?也许您应该尝试删除“-all”参数。从不合并回开发,定期合并到master,合并到light,同时显示master和light会使图形有点复杂,我想。@TimBiegeleisen我知道这是一条非常有用的消息,显示每个合并提交,但是如果我的存储库中有三个以上的分支,我担心看到git日志的全貌会非常复杂。@Marcus当只看到一个分支时,这是一个很好的建议,我认为如果我不使用其他方法来保持整个git日志的清晰,这是另一种方法。如果你启动了许多并行分支,这就是你将得到的结果。我100%同意rebase的观点,这使得日志更干净,更容易阅读。然而,我不主张将系统挤压合并为单个提交。我更喜欢保持提交的原子性,即使它们被合并,例如帮助运行平分来查找错误的合并提交。在子分支中合并父分支(开发中的主分支),或在主分支中合并后不重新设置开发的基址,会在图形中产生大量不可用的信息,但在合并前系统地挤压会删除有价值的信息,我认为。@padawin我同意。我提到squash是帮助管理历史记录的工具之一(使用rebase),但系统地应用它确实会对有用的历史记录有害。@VonC我想你建议的squash和rebase就是我想知道的,但我发现我的“发展”将在我将“发展”重设为“大师”后,继续留在“大师”那里,没有一个单独的职位。这是否意味着如果我想保持git日志的清晰,我不能在git流中使用单独的“开发”?@ChrisKao当然,你可以在git流中使用单独的
develope
。在每次重新基线后,它看起来就像与
master
保持一致,但在
develope
@ChrisKao中完成的下一次提交时,它将再次开始分支。在您编辑的问题之后,我编辑了我的答案。通过这种方式,虽然它隐藏了图形的行,但也隐藏了太多分支信息。
git log --decorate --oneline --graph --no-merges --all --branches