git init 和 git init –bare 的區別

來源:互聯網
上載者:User
git init  和 git init –bare 的區別

使用命令"git init --bare"(bare漢語意思是:裸,裸的)初始化的版本庫(暫且稱為bare repository)只會產生一類檔案:用於記錄版本庫記錄的.git目錄下面的檔案;而不會包含實際項目源檔案的拷貝;所以該版本庫不能稱為工作目錄(working tree);如果你進入版本目錄,就會發現只有.git目錄下的檔案,而沒有其它檔案;就是說,這個版本庫裡面的檔案都是.git目錄下面的檔案,把原本在.git目錄裡面的檔案放在版本庫的根目錄下面;換句話說,不使用--bare選項時,就會產生.git目錄以及其下的版本歷程記錄檔案,這些版本歷程記錄檔案就存放在.git目錄下;而使用--bare選項時,不再產生.git目錄,而是只產生.git目錄下面的版本歷程記錄檔案,這些版本歷程記錄檔案也不再存放在.git目錄下面,而是直接存放在版本庫的根目錄下面

用"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倉庫的原因。


轉自:http://blog.csdn.net/feizxiang3/article/details/8065506

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.