1 git init 和 git init –bare 的區別git
用"git init"初始化的版本庫用戶也能夠在該目錄下執行全部git方面的操做。但別的用戶在將更新push上來的時候容易出現衝突。spa
好比有用戶在該目錄(就稱爲遠端倉庫)下執行git操做,且有兩個分支(master 和 b1),當前在master分支下。另外一個用戶想把本身在本地倉庫(就稱爲本地倉庫)的master分支的更新提交到遠端倉庫的master分支,他就想固然的敲了it
git push origin master:masterio
因而乎出現ast
由於遠端倉庫的用戶正在master的分支上操做,而你又要把更新提交到這個master分支上,固然就出錯了。class
但若是是往遠端倉庫中空閒的分支上提交仍是能夠的,好比方法
git push origin master:b1 仍是能夠成功的im
解決辦法就是使用」git init –bare」方法建立一個所謂的裸倉庫,之因此叫裸倉庫是由於這個倉庫只保存git歷史提交的版本信息,而不容許用戶在上面進行各類git操做,若是你硬要操做的話,只會獲得下面的錯誤(」This operation must be run in a work tree」)img
這個就是最好把遠端倉庫初始化成bare倉庫的緣由。di