很早就使用了git、後來還管了一個VSS,但長時間以來git和VSS基本都當ftp使用,頂多知道其有回退舊版本的功能,但對「版本控制」這個詞一直以來都沒領會其內含。git
好比我一直擔憂兩個問題,一是拉取下來後修改文件若是再次拉取已修改文件是否會被覆蓋,二是兩人拉取後對同一文件分別進行修改和提交那後提交的那個會不會覆蓋前面提交的那個。服務器
針對這兩個問題,專門建了個倉庫進行測試,彙總以下表。測試
自拉取後本地未修改、遠程未修改 | 自拉取後本地未修改、遠程已修改 | 自拉取後本地已修改、遠程未修改 | 自拉取後本地已修改、遠程已修改 | |
commit | 不操做 | 不操做 | 本地代碼提交到遠程 | commit失敗。提示本地不是最新版本須要update |
update | 不操做 | 遠程代碼同步到本地 | 不操做 | update成功。但報衝突、衝突處理前沒法commit |
commit----客戶端本看修改文件----客戶端上報修改文件及其版本----服務器查看上報版本是否爲文件最新版本,是則接受不是則打回。版本控制
update----客戶端提交全部文件版本----服務端返回全部非最新版文件的最新版----客戶端查看返回的是不是本地已修改文件,是則記錄衝突不是則覆蓋。同步