git版本控制的原理