很早就使用了git、后来还管了一个VSS,但长时间以来git和VSS基本都当ftp使用,顶多知道其有回退旧版本的功能,但对“版本控制”这个词一直以来都没领会其内含。
比如我一直担心两个问题,一是拉取下来后修改文件如果再次拉取已修改文件是否会被覆盖,二是两人拉取后对同一文件分别进行修改和提交那后提交的那个会不会覆盖前面提交的那个。
针对这两个问题,专门建了个仓库进行测试,汇总如下表。
自拉取后本地未修改、远程未修改 | 自拉取后本地未修改、远程已修改 | 自拉取后本地已修改、远程未修改 | 自拉取后本地已修改、远程已修改 | |
commit | 不操作 | 不操作 | 本地代码提交到远程 | commit失败。提示本地不是最新版本需要update |
update | 不操作 | 远程代码同步到本地 | 不操作 | update成功。但报冲突、冲突处理前无法commit |
commit----客户端本看修改文件----客户端上报修改文件及其版本----服务器查看上报版本是否为文件最新版本,是则接受不是则打回。
update----客户端提交所有文件版本----服务端返回所有非最新版文件的最新版----客户端查看返回的是否是本地已修改文件,是则记录冲突不是则覆盖。