1 git init 和 git init –bare 的區(qū)別
用"git init"初始化的版本庫(kù)用戶也可以在該目錄下執(zhí)行所有g(shù)it方面的操作颓屑。但別的用戶在將更新push上來(lái)的時(shí)候容易出現(xiàn)沖突问裕。
比如有用戶在該目錄(就稱(chēng)為遠(yuǎn)端倉(cāng)庫(kù))下執(zhí)行g(shù)it操作剪勿,且有兩個(gè)分支(master 和 b1),當(dāng)前在master分支下咸作。另一個(gè)用戶想把自己在本地倉(cāng)庫(kù)(就稱(chēng)為本地倉(cāng)庫(kù))的master分支的更新提交到遠(yuǎn)端倉(cāng)庫(kù)的master分支浙值,他就想當(dāng)然的敲了
git push origin master:master
于是乎出現(xiàn)
因?yàn)檫h(yuǎn)端倉(cāng)庫(kù)的用戶正在master的分支上操作羔巢,而你又要把更新提交到這個(gè)master分支上萝映,當(dāng)然就出錯(cuò)了吴叶。
但如果是往遠(yuǎn)端倉(cāng)庫(kù)中空閑的分支上提交還是可以的,比如
git push origin master:b1 還是可以成功的
解決辦法就是使用”git init –bare”方法創(chuàng)建一個(gè)所謂的裸倉(cāng)庫(kù)锌俱,之所以叫裸倉(cāng)庫(kù)是因?yàn)檫@個(gè)倉(cāng)庫(kù)只保存git歷史提交的版本信息晤郑,而不允許用戶在上面進(jìn)行各種git操作敌呈,如果你硬要操作的話贸宏,只會(huì)得到下面的錯(cuò)誤(”This operation must be run in a work tree”)
這個(gè)就是最好把遠(yuǎn)端倉(cāng)庫(kù)初始化成bare倉(cāng)庫(kù)的原因。