所以,我正在使用Git GUI来创建一个存储库.但我无法在Google,文档或其他任何"修订表达式"上找到任何痕迹,并且需要创建一个新的分支.
此外,它似乎在程序中的许多其他地方使用,所以我相信它是很重要的知道.
我确实在StackOverflow上找到了一个关于这个的问题,但这个家伙从来没有得到答案.
我只需要知道:什么是修订版表达式?
gah*_*ooa 35
git需要能够在许多常见操作期间识别提交
有许多方法可以识别提交.您可以使用分支,标记,提交sha1或表达式.例如:
git log HEAD
Run Code Online (Sandbox Code Playgroud)
HEAD最终解析为特定的提交,您将获得该日志.你也可以说:
git log master
Run Code Online (Sandbox Code Playgroud)
master 是一个分支,它也将解析为特定的提交.
git log fd72e9c99312
Run Code Online (Sandbox Code Playgroud)
现在,这是实际的提交.
以下文档是您正在寻找的.取自http://www.kernel.org/pub/software/scm/git/docs/git-rev-parse.html上的git-rev-parse命令文档.
指定修订
修订参数通常(但不一定)命名提交对象.他们使用所谓的扩展SHA1语法.以下是拼写对象名称的各种方法.列表末尾附近列出的是命名提交中包含的树和blob.
完整的SHA1对象名称(40字节十六进制字符串),或者在存储库中唯一的子字符串.例如,如果存储库中没有其他对象以dae86e开头的对象,则dae86e1950b1277e545cee180551750029cfe735和dae86e都命名相同的提交对象.
git-describe的输出; 即最接近的标记,可选地后跟破折号和多个提交,后跟破折号,ag和缩写的对象名称.
一个象征性的引用名称.例如,master通常表示$ GIT_DIR/refs/heads/master引用的提交对象.如果你碰巧有head/master和tags/master,你可以明确地说head/master告诉git你的意思.当含糊不清时,通过采用以下规则中的第一个匹配来消除歧义:
如果$ GIT_DIR /存在,那就是你的意思(这通常只对HEAD,FETCH_HEAD,ORIG_HEAD和MERGE_HEAD有用);
否则,$ GIT_DIR/refs /如果存在;
否则,$ GIT_DIR/refs/tags /如果存在;
否则,$ GIT_DIR/refs/heads /如果存在;
否则,$ GIT_DIR/refs/remotes /如果存在;
否则,$ GIT_DIR/refs/remotes // HEAD如果存在.
HEAD命名工作树中的更改所基于的提交.FETCH_HEAD记录您使用上次git-fetch调用从远程存储库中获取的分支.ORIG_HEAD是由以强烈方式移动HEAD的命令创建的,用于在操作之前记录HEAD的位置,以便您可以轻松地将分支的尖端更改回状态.当您运行git-merge时,MERGE_HEAD会记录您正在合并到分支中的提交.
一个引用后跟后缀@,括号对中包含日期规范(例如{昨天},{1个月2周3天1小时1秒前}或{1979-02-26 18:30:00})指定先前时间点的ref值.此后缀只能在ref名称后立即使用,并且ref必须具有现有日志($ GIT_DIR/logs /).请注意,这会在给定时间查找本地引用的状态; 例如,上周当地主分公司的内容.如果您想查看在特定时间内提交的提交,请参阅--since和--until.
ref后跟后缀@,括号对中包含一个序数规范(例如{1},{15}),以指定该ref的第n个先前值.例如,master @ {1}是master的直接先前值,而master @ {5}是master的第5个先前值.此后缀只能在ref名称后立即使用,并且ref必须具有现有日志($ GIT_DIR/logs /).
您可以使用带有空ref部分的@构造来获取当前分支的reflog.例如,如果你在分支blabla上,那么@ {1}意味着与blabla @ {1}相同.
特殊构造@ { - }表示在当前构造之前检出的分支.
修订参数的后缀^表示该提交对象的第一个父级.^表示第三个父(即rev ^等于rev ^ 1).作为一项特殊规则,rev ^ 0表示提交本身,当rev是引用提交对象的标记对象的对象名时使用.
后缀〜到修订参数表示提交对象,它是指定提交对象的第三代祖父,仅跟随第一个父对象.即rev~3相当于rev ^^^,相当于rev ^ 1 ^ 1 ^ 1.请参阅下文,了解此表单的用法.
后缀为^后跟括号对中包含的对象类型名称(例如v0.99.8 ^ {commit})表示对象可以是标记,并递归取消引用标记,直到找到该类型的对象或者无法取消引用该对象不再(在这种情况下,barf).之前介绍的rev ^ 0是rev ^ {commit}的简写.
后缀为^后跟空括号对(例如v0.99.8 ^ {})表示对象可以是标记,并递归取消引用标记,直到找到非标记对象.
冒号,后跟斜杠,后跟文本:这将命名一个提交,其提交消息以指定的文本开头.此名称返回可从任何ref访问的最年轻的匹配提交.如果提交消息以!开头,则必须重复该操作; 特殊序列:/!,其次是别的东西!暂时保留.
后缀:后跟路径; 这将命名由冒号前部分命名的树形对象中给定路径的blob或树.
结肠,任选后跟一个阶段号(0到3)和一个冒号,然后是一个路径; 这将在给定路径的索引中命名blob对象.缺少阶段编号(及其后面的冒号)命名阶段0条目.在合并期间,阶段1是共同的祖先,阶段2是目标分支的版本(通常是当前分支),阶段3是要合并的分支的版本.
以下是Jon Loeliger的插图.提交节点B和C都是提交节点A的父节点.父提交从左到右排序.
G H I J
\ / \ /
D E F
\ | / \
\ | / |
\|/ |
B C
\ /
\ /
A
A = = A^0
B = A^ = A^1 = A~1
C = A^2 = A^2
D = A^^ = A^1^1 = A~2
E = B^2 = A^^2
F = B^3 = A^^3
G = A^^^ = A^1^1^1 = A~3
H = D^2 = B^^2 = A^^^2 = A~2^2
I = F^ = B^3^ = A^^3^
J = F^2 = B^3^2 = A^^3^2
Run Code Online (Sandbox Code Playgroud)
Nor*_*sey 10
gahooa给出了全面的答案.常见情况:
master)gitk或中捕获git log欢迎来到git的精彩世界.TMI是课程的标准...