git:波浪号(~)和脱字符(^)之间的区别是什么

w46czmvw  于 2022-12-10  发布在  Git
关注(0)|答案(1)|浏览(145)

下面是show-rev的git输出

$ git name-rev  --all

2651919f941c11581c794b40aadb2028c4f52ab4 joincolumn_issue
2617f2a1410ce0ec8ea268bbb073008b73490e78 master~2
292def505dd3cdbfd9ac974396775683b5f4c288 ls
0ec9116840a3f21c0b800617c29b7ddab5fda928 joincolumn_issue~2
ee9bb706c8fcc329fac4acf69ad6b684f1069170 master~1
d56a6751771b1f62d9ceb0bcce9a2391c004ee44 master^2
3d80a12ed375c6a9572cde39b5be0722c8cb6439 joincolumn_issue~1
df1834dbe560c2c95c8abaeec494eb1767b96a1e master

如您所见,有一些行包含**master^2master~2**,因此,想知道这两者之间有什么区别,并且输出也没有按时间顺序排列。
git图进一步显示如下

$ git log --all --oneline --graph

* 2651919 (origin/joincolumn_issue, joincolumn_issue) changing to @JoinColumn(name="country_nm")
* 3d80a12 hibernate ignoring joinColumn value
* 0ec9116 changing name in joinColumn is breaking
| * 292def5 (origin/mappedBy, mappedBy, ls) OneToMany using mappedBy
|/
*   df1834d (HEAD -> master, origin/master) Merge branch 'master' of https://github.com/samshers/graphql-hibernate
|\
| * d56a675 fixed country null issue
* | ee9bb70 fixed country null issue
|/
* 2617f2a hibernate cascade error issue. country field in state table set to null
cvxl0en2

cvxl0en21#

语法BRANCH^表示BRANCH的第一个父项。语法BRANCH^n表示分支的第n个父项。换句话说,BRANCH^等价于BRANCH^1。只有在合并时才可能有多个父项,因此只有在合并时才使用BRANCH^2(对于octopus合并,BRANCH^3和更高版本)。
语法BRANCH~等价于BRANCH^1,而BRANCH~n等价于在BRANCH的末尾添加n个^1的副本。换句话说,在每种情况下,后者都是BRANCH的第n个父项,只在第一个父项之后。
通常,第一个父级是主分支,第二个和后续父级是合并到主分支中的副分支,因此这些语法针对这种情况进行了优化。
也有其他语法使用插入符号,但它们的工作方式不同,含义也不同。你可以看到所有使用man gitrevisions的Git修订版的语法。

相关问题