git init 和 git init --bare 的區別
用"git init "初始化的版本庫用戶也可以在該目錄下執行所有git方面的操作。但別的用戶在將更新push上來的時候容易出現衝突。
比如有用戶在該目錄(就稱爲遠端倉庫)下執行git操作,且有兩個分支(master 和 b1),當前在master分支下。另一個用戶想把自己在本地倉庫(就稱爲本地倉庫)的master分支
的更新提交到遠端倉庫的master分支,他就想當然的敲了
git push origin master:master
於是乎出現
因爲遠端倉庫的用戶正在master的分支上操作,而你又要把更新提交到這個master分支上,當然就出錯了。
但如果是往遠端倉庫中空閒的分支上提交還是可以的,比如
git push origin master:b1 還是可以成功的
解決辦法就是使用”git init --bare”方法創建一個所謂的裸倉庫,之所以叫裸倉庫是因爲這個倉庫只保存git歷史提交的版本信息,而不允許用戶在上面進行各種git操作,如果你硬要操
作的話,只會得到下面的錯誤(”This operation must be run in a work tree”)
這個就是最好把遠端倉庫初始化成bare倉庫的原因。