这个git log --graph说明了什么?

zazmityj  于 2023-02-17  发布在  Git
关注(0)|答案(1)|浏览(111)

我有以下分支机构:

  • 主控
  • 升级到查询1.4
  • 处理异常

我在upgradingToJquery1.4分支上工作,并提交了一些文件。
我创建了另一个分支handlingExceptions做了一些修改并提交了它们。
然后我切换回master并合并了handlingExceptions分支。令人惊讶的是,我认为upgradeToJquery1.4分支中的更改也被合并了。然后为了确认,我合并了upgradeToJquery1.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 accountController catches the exceptions and now prov
    | |/
    | * 76145d1 1. css/images - Jquerymobile icon files
    | * 34bc7b9 custom-jqueryMobile.js - to override jquerymobile defaults. Currently added transitions doesn't work with p
kmpatx3s

kmpatx3s1#

从结构上看,你有这样的(我在这里所做的只是水平地重新绘制图表):

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 -b handlingExceptions HEAD^来创建handlingExceptions,这样提交C就可以得到B作为其父提交。
无论如何,在git merge handlingExceptions发生的时候,你在master上,并且handlingExceptions指向提交C,所以创建了提交E。提交消息和图节点在以下方面相互支持:E的父节点是未显示的东西(第一父节点)和C(第二父节点).然后,当仍然在master上时,一个 * 单独的 * git merge upgradeToJquery1.4创建了提交F,其父节点是E(第一父节点)和D(第二父节点).
在任何情况下,分支标签现在都指向提交DCF

相关问题