什么是这个git log --graph表示?

时间:2014-02-17 06:45:14

标签: git git-branch git-log

我有以下分支:

  • upgadingToJquery1.4

  • handlingExceptions

我正在开发 upgradeToJquery1.4 分支并做了一些提交。 我创建了另一个分支 handlingExceptions 进行了一些更改并提交了它们。 然后我切换回master并合并了 handlingExceptions 分支。令人惊讶的是,我认为 upgardeToJquery1.4 分支的变化也已合并。然后确认我合并了 upgradToJqueyry1.4 分支并且它说是最新的。

有人可以解释图表在这里指示的内容吗?

git log --oneline --decorate --graph --all
    *   a54bd6d (HEAD, master) Merge branch 'upgradeToJquery1.4'
    |\
    | * d4f762c (upgradeToJquery1.4) main.sass updated
    * |   bcf7a4f Merge branch 'handlingExceptions'
    |\ \
    | * | 471c1ad (handlingExceptions) the postLogin method in the accountControlle catches the exceptions and now prov
    | |/
    | * 76145d1 1. css/images - Jquerymobile icon files
    | * 34bc7b9 custom-jqueryMobile.js - to override jquerymobile defaults.Currently added transitions dont work with p

1 个答案:

答案 0 :(得分:1)

在结构上,你有这个(我在这里完成的是水平重绘图形):

          D    <-- upgradeToJquery1.4
        /   \
- A - B - C   \    <-- handlingExceptions
            \   \
------------- E - F  <-- HEAD=master

其中:

A = 34bc7b9 custom-jqueryMobile.js - to ...
B = 76145d1 1. css/images - Jquerymobile icon files
C = 471c1ad the postLogin method in ...
D = d4f762c main.sass updated
E = bcf7a4f Merge branch 'handlingExceptions'
F = a54bd6d Merge branch 'upgradeToJquery1.4'

有不同的方法可以到达这里,但鉴于您创建了handlingExceptions(可能是git checkout -b),最简单的可能就是:

git checkout upgradeToJquery1.4
... make commit A (or maybe it was already there but you said make "a few" commits)
... make commit B
git checkout -b handlingExceptions
... make commit C
git checkout upgradeToJquery1.4
... make commit D
git checkout master
git merge handlingExceptions
git merge upgradeToJquery1.4

另一种不同的方式是:

git checkout upgradeToJquery1.4
... make commits A, B, and D
git checkout HEAD^   # get back onto commit B
git checkout -b handlingExceptions
... make commit C
... now checkout master and merge as before

或者您可以git checkout HEAD^创建git checkout -b handlingExceptions HEAD^而不是单独的handlingExceptions,以便提交C获得B作为其父级。

但是,在任何情况下,在发生git merge handlingExceptions时,您在master并且handlingExceptions指向了提交C,因此创建了提交{{} 1}}。提交消息和图形节点相互支持:E的父母没有显示(第一个父母)和E(第二个父母)。然后,在C上,单独的 master创建了提交git merge upgradeToJquery1.4,其父项为F(第一个父级)和{{1 (第二个父母)。

在任何情况下,分支标签都指向现在提交EDD