ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

Git命令中波浪号~与脱字符^的区别

2022-01-19 11:33:14  阅读:153  来源: 互联网

标签:字符 HEAD Git 当前 波浪 --- 提交 节点 分支


0.前言

波浪号~,英文名叫 tilde。脱字符^,英文名叫caret

这两种符号常见于git reset的情景,简单的项目结构和操作一般不会涉及到两者之间的区别,似乎用哪个都可以。如果遇到比较繁杂的提交历史,可能就要好好体验一下二者更深层的含义。

1.两种符号的异同和转换

1.1 ~表示当前分支所属提交时间线上的某个提交

只适用于当前分支所在的线性的历史提交。

如果提交历史为

A---B---C---D

当前所在点为HEAD=D,那么

C=HEAD~1
B=HEAD~2
A=HEAD~3

1.2 ^表示与分支合并操作相关时父分支所属提交的编号标识

如果提交历史如下所示,当前所在点为HEAD=D,那么

  E---F
 /     \
A---B---C---D
           /
      G---H
D=HEAD

C=D^1
H=D^2
G=D^2^1=H^1

B=C^1
F=C^2=D^^2
E=F^1

1.3 两者之间的转换

仍然以1.2节中的例子为准,下面是两种符号之间的联系和转换。

D=HEAD
C=D~1=D^1=D^
B=D~2
A=D~3

# D由H和C合并产生,C是当前分支中的父节点,H是属于另一个分支的第二个父节点
C=D^1
H=D^2
G=D^2^1=H^1

# C由B和F合并产生,B是C的当前分支所在时间线中的父节点
# F是C的第二个父节点,属于另一个分支
B=C^1
F=C^2=D^^2=D~1^2
E=F^1

A=B^1=B~1=C^1^1=C~1^1=D^1^1^1=D~3

(全文完)


参考资料

[1] What's the difference between HEAD^ and HEAD~ in Git?

本文作者 :phillee
发表日期 :2022年01月19日
本文链接https://www.cnblogs.com/phillee/p/15821555.html
版权声明 :自由转载-非商用-非衍生-保持署名(创意共享3.0许可协议/CC BY-NC-SA 3.0)。转载请注明出处!
限于本人水平,如果文章和代码有表述不当之处,还请不吝赐教。

感谢您的支持

¥ 打赏

微信支付

标签:字符,HEAD,Git,当前,波浪,---,提交,节点,分支
来源: https://www.cnblogs.com/phillee/p/15821555.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有