用法1:git clone <repository> <directory>
將<repository>指向的版本庫創建一個克隆到<directory>目錄。目錄<directory>相當于克隆版本庫的工作區,文件都會檢出,版本庫位于工作區的.git目錄中
用法2:git clone --bare <repository> <directory.git>
用法3:git clone --mirror <repository> <directory.git>
用法2和用法3創建的克隆版本庫都不包含工作區,直接就是版本庫的內容,這樣的版本庫稱為裸版本庫。一般約定俗成裸版本庫的目錄名以.git做后綴,所以上面示例中將克隆出來的裸版本庫目錄名寫作<directory.git>。區別在于用法3克隆出來的裸版本對上游版本庫進行了注冊,這樣可以在裸版本庫中使用git fetch命令和上游版本庫進行持續同步。
不使用--bare或--mirror創建出來的克隆包含工作區,這樣就會產生兩個包含工作區的版本庫,這兩個版本庫對等。這兩個工作區本質上沒有區別,往往提交在一個版本A中進行,另一個B作為備份。只能從B執行git pull命令從A中拉回新的提交實現版本庫同步,而不能從版本庫A向版本庫B執行git push推送操作
還可以通過git init的方式創建裸版本庫,需要加--bare參數。
當執行git push命令時,如果沒有設定推送的分支,而且當前分支也沒有注冊到遠程的某個分支,將檢查遠程分支是否有和本地相同的分支名(如master),如果有,則推送,否則報錯。