git工作原理