如何理解 Git 的分布式

2025-04-29 07:33:40
推荐回答(1个)
回答1:

如果双方改的是不同的文件,或者同一个文件的不同部分,那么 git 是可以自动合并的。
如果修改的是同一个文件同一个部分,git 就没办法自动合并了,这种情况被称为「冲突」,git 会列出双方的最新版本,然后由进行合并的人(例子里是 C), 手动进行编辑。
在实际开发中,如果两个人只是往这个文件里加函数,是完全可以自动合并的,冲突主要是出现了修改了同一行的情况。

很多介绍强调 git 可以离线 commit, 意在于和 svn 做对比。svn 中,只有服务器上有完整的版本库,客户端的代码历史并不是完整的。而 git 中每一个客户端都是一个完整的版本库,push 和 pull 操作其实是在多个完整的版本库之间做同步。
这样的优势就是不怕服务器挂掉或者丢失,每个人都有完整的版本库,这也是 Linus 开发 git 的出发点(Linux 是一个多人分布式协作的开源项目). 而劣势就在于权限管理比较差,每个人都有完整的版本库有可能会导致代码(历史上所有的修改)不小心泄露。