美文网首页
符号操作

符号操作

作者: 一江碎月 | 来源:发表于2018-03-18 21:52 被阅读0次

@

HEAD 的简写。

如:

$ git rev-parse @
39cacbb938eaab77d33f47a16d0a4e27e42d6a25
$ git rev-parse HEAD
39cacbb938eaab77d33f47a16d0a4e27e42d6a25
$ git cat-file -t 39cacbb938eaab77d33f47a16d0a4e27e42d6a25
commit

从中看出,@ 与 HEAD 完全指向同一个 commit 结点。


^

跟在提交结点之后 ,用于查看当前结点的祖先提交结点。

  1. 几个 ^ 就表示第几代祖先。如 ^ 表示父结点(即第一代祖先结点);^^ 表示祖先结点(即父结点的父结点),依次类推。

  2. ^num 表示当前结点的第几父结点,该语法只用于 merge 产生的结点。因为此种结点至少有两个父结点,^1 表示第一父结点(也即是合并是当前分支所在的结点),^2 表示第二父结点(即除 ^1 外的结点)。当结点没有多个父结点时,使用 ^num 会报错。如:

$     git rev-parse HEAD^2
HEAD^2
fatal: ambiguous argument 'HEAD^2': unknown revision or path not in the working tree.

~

用于查看当前结点的祖先提交结点。

  1. HEAD~ 与 HEAD^ 完全等价,都指向当前提交结点的父结点。使用多个 ~ 与 ^ 时,效果也完全一样。

  2. HEAD~num 与 HEAD^num 完全不一样。前者表示第几代祖先结点,后者表示当前结点的第几个父结点。

$     git rev-parse HEAD~2
9b335a39f65dff232f239c08baeeb9f7d27f193a
$     git rev-parse HEAD^2
HEAD^2
fatal: ambiguous argument 'HEAD^2': unknown revision or path not in the working tree.

第一个命令用于获取当前结点的祖父结点,第二个命令用于获取当前结点的第二个父结点(只不过当前结点没有)。

  1. 可以将 ~ 与 ^ 结合使用。如
$     git rev-parse HEAD~3^2

..

选出在一个分支中而不在另一个分支中的提交。

其格式为 branch1..branch2 表示在 branch2 分支中却不在 branch1 中的提交结点

$     git log dev..master

该操作会列出不在 dev 分支却在 master 分支中的提交结点。反过来,如果想查找在 dev 分支却不在 master 分支中的,可以写成 master..dev

  1. branch1 或 branch2 可以使用远程分支。如 git log origin/master..HEAD 表示远程 master 无但当前分支有的结点。

  2. 如果省略了其中的一边, Git 会默认为 HEAD。 如 git log dev..git log dev..HEAD 完全等价。

--not 与 ^

^ 跟在引用之前时,表示欲查询的提交不存储于该引用之中。 --not 与 ^ 类似。

要注意区分 ^ 位于引用之前与引用之后的区别。

如:

$ git log refA refB ^refC
$ git log refA refB --not refC

上述两个命令作用一样,都表示查询在 refA 或 refB ,但又不存在于 refC 中的结点。

因此,上面的 .. 命令也可用 --not 或 ^ 代替。下面三个命令是等价的,都表示查询存在于 refB 但不存在于 refA 中的提交:

$ git log refA..refB
$ git log ^refA refB
$ git log refB --not refA

^ 后跟的结点位置不一定处于最后,但 --not 位于最后。

...

用于获取只存在于一个引用中的提交。即两个引用的并集减去交集的部分。

如:

$ git log --left-right master...dev
commit < e46a0a492fa5a77a7709ba3d201c9a226297bce1
commit > db496c69ad86e2a4cb5f58a9da2b998498651080
commit > d7b0598e71391add76559f118186b39474468098
commit > 9b3a660fdeda67bd8dcf428719eaf84b1fb412f2

其中 --left-right 用于指向当前的提交到底属性哪个引用。< 表示属于 ... 前的引用,> 表示属于 ... 后的引用。

相关文章

  • 符号操作

    @ HEAD 的简写。 如: 从中看出,@ 与 HEAD 完全指向同一个 commit 结点。 ^ 跟在提交结点之...

  • js高级程序设计笔记3

    位操作 NOT ~ AND & OR | 左移 << 带符号右移 >> 无符号右移 >>>

  • 符号链接和硬链接

    符号链接 符号链接是链接目标文件的路径及其本身。 读写符号连接文件的程序实际上在操作目标文件。 cp或rm操作符号...

  • C语言 key points(extern,auto,type

    关键操作符号:&&: 并且||:或者*:解引用操作符或间接操作符。&: 取地址<<:位bite移符号 左移 :位b...

  • JavaScript基本概念之操作符——赋值操作符

    赋值操作符(=) 复合赋值操作符 乘*= 除/= 模%= 加+= 减-= 左移<<= 有符号右移>>= 无符号右移...

  • swift 笔记

    字符串操作 符号 for in

  • Cpp:位操作符

    位操作符:位操作符操作的整数可以是有符号或无符号数。 下面的例子,假设unsigned char有8位: ~: 类...

  • JavaScript数据操作之等于和全等符号的说明 赋值操作(=) 等于符号(==)作用:用来判断左边的值和右边的...

  • 自学是门手艺——学习记录4/100

    一、学习内容 5.1 关键词:函数、语句块、注释、操作符、赋值符号与操作符 二、学习思考 关于操作符和赋值符号,语...

  • Linux shell

    linux shell中的条件判断 bash [] 符号[]俩个符号左右都要有空格分隔内部操作符与操作变量之间要有...

网友评论

      本文标题:符号操作

      本文链接:https://www.haomeiwen.com/subject/sdpyqftx.html