李剑模糊英语怎么样:git merge的三种模式

来源:百度文库 编辑:中财网 时间:2024/04/28 14:19:58
在使用git merge时,可能是以下三种模式中的某一种" P5 s1 c. R9 l! m- @2 s

3 t( _6 v$ W6 J4 g) d, G" u+ n, u# L, u; y8 B, Y
1.Fast forward9 u4 Q: X& N8 g1 n4 Q8 e4 L2 G
   当待合并的2个branch最近的commit是线性关系时# X, e' j; u0 _% L! Y: Q
   或者说,某个branch自上次更新后没有commit信息时
  {. C# w% ?6 T$ B; r7 S& F( i   git则直接移动指针即可,并没有真正的merge操作,也没有对应的merge commit信息# s) h3 z  \% B: z! e
   如下图,合并master和hotfix分支,既是fast-forward模式/ r2 D2 I3 F' `5 ^: M, T

0 |6 X. R# C. L" C$ }: N- Z! _. i% f1 a) e. u( g/ b
2.Merge made by recursive% u3 M4 O4 Y$ A
   当要合并的2个branch的最近的commit对应的直接祖先不同时& g! E9 B' }. T* v
   git就无法通过简单的移动指针来进行合并: V9 G/ O$ ?/ H, O+ G
   只能以2个branch的最新commit和他们的共同祖先进行一次merge
% Q% X6 M1 T( X1 z9 Q   并对应有一个merge commit信息$ z5 d/ z9 ^0 D5 H7 k  y( w* g
   如下图,合并master和iss53分支:4 G9 p8 F, @/ r

2 |0 S( l/ n+ {' ~- g
: K( r6 a6 ?' D1 F7 S9 S6 C3.Conflict
, r6 c- f7 ^. f' u   当2个branch都修改了同一个文件的同一部分时, s' N8 s! p$ q
   这时,就会发生冲突,git的自动合并就会失败  j7 C8 l0 ]9 g) u9 r* Q! y
   这时,使用git status会看到+ D! n4 u, i  z+ c
  
) c* V" c" a2 H/ d& c8 T, wtest.html: needs merge
0 q- }  M" e, n  a! o- M" [5 f6 D$ y0 l& P, A, v7 b/ X; M2 L
+ Z; @+ i  @8 w7 A
   需要手工合并冲突后,git add一下,表明冲突修改完了7 Z& O- M7 S$ e4 F$ a
   然后,再git commit即可
/ R, |4 f0 c. R+ y  e. G* k; L7 ^