搜尋

首頁  >  問答  >  主體

github - git init 和 git init --bare 的差別?

找了很久沒找到相關的資料,請問,git init 和 git init --bare 的差別大概是什麼呢?

大家讲道理大家讲道理2836 天前832

全部回覆(7)我來回復

  • 仅有的幸福

    仅有的幸福2017-05-02 09:33:19

    在本文中我將:

    1. 使用「普通函式庫」代指用"git init"指令所建立的GIT函式庫;

    2. 使用「裸庫」代指用"git init --bare"指令所建立的GIT函式庫;

    當你建立一個普通函式庫時,在工作目錄下,除了.git目錄之外,你還可以看到庫中所包含的所有來源檔案。你擁有了一個可以進行瀏覽和修改(add, commit, delete等)的本地庫。
    當你建立一個裸庫時,在工作目錄下,只有一個.git目錄,而沒有類似於本地庫那樣的文件結構可供你直接進行瀏覽和修改。但你仍舊可以用git show指令來進行瀏覽,舉例(參數為某個commit的SHA1值):

    # git show 921dc435a3acd46e48e3d1e54880da62dac18fe0
    

    一般來說,一個裸庫往往被創建用於作為大家一起工作的共享庫,每一個人都可以往裡面push自己的本地修改。一個慣用的命名方式是在庫名後面加上.git,舉個例子:

    # mkdir example.git
    # cd example.git
    # git init --bare .
    

    這樣你便擁有了一個叫做example的共享庫。在你自己的本機上,你可以用git remote add指令做初始化check-in:

    // 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
    

    專案團隊裡面的每個人都可以clone這個函式庫,然後完成本地修改之後,往這個函式庫中push自己的程式碼。

    # git clone git@example.com:example.git
    # cd example
    

    參考:

    1. 普通庫與裸庫的區別:http://stackoverflow.com/questions/78611...

    2. 該如何使用一個裸庫:http://stackoverflow.com/questions/76324...

    3. 什麼是GIT裸庫:http://www.saintsjd.com/2011/01/what-is-...

    4. 如何設定一個遠端共享庫並進行團隊協作:http://thelucid.com/2008/12/02/git-setti...

    5. git remote add與git clone的區別:http://stackoverflow.com/questions/48555...

    回覆
    0
  • 怪我咯

    怪我咯2017-05-02 09:33:19

    用「git init –bare」初始化的版本函式庫(bare repository)只包含」.git」目錄(記錄版本歷史),不含專案原始檔拷貝。如果你進入版本目錄,你會發現僅有”.git”目錄,沒有其他檔案。版本庫僅包含記錄著版本歷史的檔案。

    回覆
    0
  • 迷茫

    迷茫2017-05-02 09:33:19

    上面的人都說的太複雜了,3句話就可以說明白:
    1.git init 創建本地倉庫(在工程目錄下創建)
    2.git init --bare 創建遠端倉庫(在伺服器或者工程目錄以外路徑都可以建立的備份倉庫)
    工程commit到1中,push到2中;

    回覆
    0
  • 阿神

    阿神2017-05-02 09:33:19

    bare repo沒有work tree

    回覆
    0
  • 淡淡烟草味

    淡淡烟草味2017-05-02 09:33:19

    有本書是《git權威指南》可以看看,真的不錯

    回覆
    0
  • 曾经蜡笔没有小新

    曾经蜡笔没有小新2017-05-02 09:33:19

    `--bare
    建立一個裸儲存庫。如果沒有設定GIT_DIR環境,則設定為目前工作目錄。 `
    http://blog.csdn.net/feizfang3/article/details/8065506

    回覆
    0
  • 某草草

    某草草2017-05-02 09:33:19

    從使用方面看:
    git init 用於本地代碼庫,跟文件夾下包括所有的源代碼,git版本控制相關的文件在.git目錄下;
    git init --bare 意思是建一個裸庫,執行指令後,跟目錄下只包括git版本控制相關的檔案等,相對於上面.git資料夾下的所有檔案。跟目錄是不包括項目原始碼的。
    一般來講,作為遠端備份或公共版本庫時,應該使用git init --bare。

    回覆
    0
  • 取消回覆