脱字符(^)是什么意思?
我在这里看到一个问题的答案 ,帮助恢复在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介绍文档还介绍了修订和范围说明符: