脱字符(^)是什么意思?
我在这里看到一个问题的答案 ,帮助恢复在git中删除的文件。
解决scheme是
git checkout <deleting_commit>^ -- <deleted_file_path>
插入符号( ^ )做了什么? 我在其他地方看过,在git中做非常有用的事情。 这是神奇的。 有人请为我破坏它,告诉我它是干什么的?
HEAD^表示当前分支顶端的第一个父项。
请记住,git提交可以有多个父代。 HEAD^是HEAD^1缩写,您也可以根据需要定位HEAD^2等等。
你可以到任何提交的父母,而不仅仅是HEAD 。 你也可以代代相传:例如, master~2表示master分支的祖父母,在含糊不清的情况下赞成第一个父母。 这些说明符可以任意链接, 例如 topic~3^2 。
有关完整的详细信息,请参阅git rev-parse --help的“指定修订”部分。
这意味着“父母的”。 所以HEAD^表示“当前HEAD的父母”。 你甚至可以将它们链接在一起: HEAD^^表示“当前HEAD的父亲”(即当前HEAD的祖父母), HEAD^^^表示“当前父亲的父亲HEAD“等等。
插入符号是指特定提交的父项。 例如HEAD^是指当前HEAD commmit的父节点。 (另外, HEAD^^是指祖父母)。
指定范围时也可以使用^ (插入符号)。
要排除提交可达的提交,使用前缀^符号 。 例如^ r1 r2表示提交从r2可达,但不包括从r1可达的。
<转>
包含可从(即,的祖先)到达的提交。
^ <转>
排除可从(即其祖先)到达的提交。
(^)得到命令的父源,即HEAD ^将得到HEAD的父亲。
这是一个视觉解释。 假设你有这样的历史:
master A <- B <- C <- D / E <- F feature
当function合并到主, C是由两个祖先创build的。 Git分配这些祖先的数字。 主线祖先B被分配1,并且特征祖先F被分配2。
因此C^1是指B而C^2是指F C^是C^1的别名。
你只会使用<rev>^3 。 如果你已经执行了三个分支的合并。
克拉代表一个提交抵消(父母)。 因此,举例来说, HEAD^表示“HEAD”, HEAD^^^表示“HEAD三次提交”。
格雷格培根给了一个很好的链接,但它非常密集。 在线Git介绍文档还介绍了修订和范围说明符: