坏气十足 发表于 2018-1-13 16:19:52

关于Git HEAD^与HEAD~的关系

  关于Git HEAD^与HEAD~的关系
  请参考下图,来自stackoverflow
  http://stackoverflow.com/questions/2221658/whats-the-difference-between-head-and-head-in-git
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
  
G-D-B-A可以认为是主干,其他都是merge进来的其他分支节点。
  下图是我本地的项目的部分分支图:
https://images2015.cnblogs.com/blog/587257/201702/587257-20170220101038991-738140461.png
  点中其中的一个节点就可以看到Parents和child,一般来说,直线相连的上级就是第一个parent,斜线连接过来的是merge进来的。
  如果reset到错误的head上,然后再git pull的话,很有可能会提示有diverge,这样情况下pull代码的话,会出现conflict,需要手动merge,这样容易出现问题。
  如果reset到正确的branch上,git pull就可以直接fast forward了。
页: [1]
查看完整版本: 关于Git HEAD^与HEAD~的关系