// assume there're some initial files you want to push to the bare repo you just created,
// which are placed under example directory
# cd example
# git init
# git add *
# git commit -m "My initial commit message"
# git remote add origin git@example.com:example.git
# git push -u origin master
在本文中我將:
使用「普通函式庫」代指用"git init"指令所建立的GIT函式庫;
使用「裸庫」代指用"git init --bare"指令所建立的GIT函式庫;
當你建立一個普通函式庫時,在工作目錄下,除了.git目錄之外,你還可以看到庫中所包含的所有來源檔案。你擁有了一個可以進行瀏覽和修改(add, commit, delete等)的本地庫。
當你建立一個裸庫時,在工作目錄下,只有一個.git目錄,而沒有類似於本地庫那樣的文件結構可供你直接進行瀏覽和修改。但你仍舊可以用git show指令來進行瀏覽,舉例(參數為某個commit的SHA1值):
一般來說,一個裸庫往往被創建用於作為大家一起工作的共享庫,每一個人都可以往裡面push自己的本地修改。一個慣用的命名方式是在庫名後面加上.git,舉個例子:
這樣你便擁有了一個叫做example的共享庫。在你自己的本機上,你可以用git remote add指令做初始化check-in:
專案團隊裡面的每個人都可以clone這個函式庫,然後完成本地修改之後,往這個函式庫中push自己的程式碼。
參考:
普通庫與裸庫的區別:http://stackoverflow.com/questions/78611...
該如何使用一個裸庫:http://stackoverflow.com/questions/76324...
什麼是GIT裸庫:http://www.saintsjd.com/2011/01/what-is-...
如何設定一個遠端共享庫並進行團隊協作:http://thelucid.com/2008/12/02/git-setti...
git remote add與git clone的區別:http://stackoverflow.com/questions/48555...
用「git init –bare」初始化的版本函式庫(bare repository)只包含」.git」目錄(記錄版本歷史),不含專案原始檔拷貝。如果你進入版本目錄,你會發現僅有”.git”目錄,沒有其他檔案。版本庫僅包含記錄著版本歷史的檔案。
上面的人都說的太複雜了,3句話就可以說明白:
1.git init 創建本地倉庫(在工程目錄下創建)
2.git init --bare 創建遠端倉庫(在伺服器或者工程目錄以外路徑都可以建立的備份倉庫)
工程commit到1中,push到2中;
bare repo沒有work tree
有本書是《git權威指南》可以看看,真的不錯
`--bare
建立一個裸儲存庫。如果沒有設定GIT_DIR環境,則設定為目前工作目錄。 `
http://blog.csdn.net/feizfang3/article/details/8065506
從使用方面看:
git init 用於本地代碼庫,跟文件夾下包括所有的源代碼,git版本控制相關的文件在.git目錄下;
git init --bare 意思是建一個裸庫,執行指令後,跟目錄下只包括git版本控制相關的檔案等,相對於上面.git資料夾下的所有檔案。跟目錄是不包括項目原始碼的。
一般來講,作為遠端備份或公共版本庫時,應該使用git init --bare。