诀窍是要意识到某些提交是打开的
许多的
分支机构。当你做了重新基准时,你改变了标签
dev
.四项现有承诺
是
,更早,仅在
master
现在都在
主人
和
开发人员
.其他两次提交
开发人员
不再打开
开发人员
完全相反
新
承诺更换两个旧的;
副本
-现在开始
开发人员
。
下面是两个提交链(之前和之后,从图像中转录)及其哈希ID。
1.
我还添加了分支标签。请注意,提交的哈希ID是其“真实名称”:这是提交的真实标识。这是短日志,例如。,
master commit 4
,只是一个可以复制到新的不同提交的文本字符串。换句话说,那些由十六进制字符组成的杂乱无章的字符串
c4ef678
等等是您应该注意的实际名称。
1.
此图表为
不
引路
git log --graph --oneline
会画出来,这是你图像的文字转录。这个
--graph
选项在中打开拓扑排序
git log
,它更改了在每行一个输出中聚集提交的方式,并尝试以特定的方式绘制合并的第一个和第二个父级,这里的情况都不是这样。
之前:
* c4ef678 dev commit 3 (dev)
| * 6d98d13 master commit 5 (master)
| * 531ae4f master commit 4
* | 1d1165d dev commit 2
| * 264c713 Merged dev into master
|/|
| * d3145f2 master commit 3
* | e855864 dev commit 1
|/
* e90a213 master commit 2
* abe2416 master branch commit
* 6685b20 README.md created online with Bitbucket
请注意,提交
c4ef678
和
1d1165d
是
只有
在…上
开发人员
;提交
6d98d13
和
531ae4f
和
264c713
和
d3145f2
是
只有
在…上
主人
;和
e855864
和以下是打开的
二者都
分支机构。要查看这一点,请从带有分支名称标签的提交开始
c4ef678
对于
开发人员
或
6d98d13
对于
主人
并按照点与点之间的连线(此处文本副本中的星号与星号之间的连线)。您只能在通常向下的方向上移动,但以如下方式合并
264c713
跟随
二者都
线条向下。
之后:
* e09e49b dev commit 3 (dev)
* 6a8c956 dev commit 2
* 6d98d13 master commit 5 (master)
* 531ae4f master commit 4
* 264c713 Merged dev into master
|\
* | d3145f2 master commit 3
| * e855864 dev commit 1
|/
* e90a213 master commit 2
* abe2416 master branch commit
* 6685b20 README.md created online with Bitbucket
下面的图表要简单得多:提交
e09e49b
是
提示
属于
开发人员
,及其前身
6a8c956
是
只有
在…上
开发人员
.Afterwell,
之前
真正地在此之前,我们有
6d98d13
,这是
提示
属于
主人
两个都有
主人
和
开发人员
.那么我们有
531ae4f
,这在两个
主人
和
开发人员
等等
我们现在可以看到,那是什么
git rebase
确实是为了
复制
原始提交
c4ef678
和
1d1165d
到
新
提交
e09e49b
和
6a8c956
分别地的父级
6a8c956
是
6d98d13
,这是
主人
.的父级
c4ef678
当然是
1d1165d
–这意味着复制是按相反的顺序进行的,即先复制旧的提交,然后复制新的提交。Git中的“向前”顺序实际上是向后的,因为Git以
小费最多
提交由分支标签标识,然后通过查看每个提交的父级,返回到以前的提交。对于具有两个父级的合并提交,
2.
Git看着
二者都
父母
由于提交一次可以位于多个分支上,因此复制这两个分支的行为
开发人员
-仅对位于现有提交之上的两个新提交进行提交
是
,之前,仅打开
主人
,现在已经改变了一些事情
六
提交时间
开发人员
没有打开
开发人员
之前:复制的两个,以及仅在
主人
。以下是此处报告的六项:
Your branch and 'origin/dev' have diverged, and
have 6 and 2 different commits each, respectively
仅打开的两个
origin/dev
这也是您自己的标签
你的
存储库;它是存储库中关于当前或过去的内容的内存
origin
都是原件前的两份复印件。也就是说,如果我们把它们画进去,我们会得到一个稍微复杂一点的图表:
* c4ef678 dev commit 3 (origin/dev)
* 1d1165d dev commit 2
| * e09e49b dev commit 3 (dev)
| * 6a8c956 dev commit 2
| * 6d98d13 master commit 5 (master)
| * 531ae4f master commit 4
| * 264c713 Merged dev into master
| |\
| | * d3145f2 master commit 3
|/ |
* | e855864 dev commit 1
| /
| /
|/
* e90a213 master commit 2
* abe2416 master branch commit
* 6685b20 README.md created online with Bitbucket
如果扫描此处的连接行,可以看到哪些提交是
开发人员
未打开的
原点/偏差
,哪个是打开的两个
原点/偏差
未打开的
开发人员
。
2.
合并提交实际上是具有两个
或更多
父母,但“或更多”的情况有点奇怪。这些提交称为
八达通合并
而八达通合并从来都不是
必需的
,所以它们主要是为了炫耀。:-)