suchen

Heim  >  Fragen und Antworten  >  Hauptteil

github - git init 和 git init --bare 的区别?

找了很久没有找到相关的资料,请问,git init 和 git init --bare 的区别大概是什么呢?

大家讲道理大家讲道理2813 Tage vor815

Antworte allen(7)Ich werde antworten

  • 仅有的幸福

    仅有的幸福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...

    Antwort
    0
  • 怪我咯

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

    用“git init –bare”初始化的版本库(bare repository)仅包含”.git”目录(记录版本历史),不含项目源文件拷贝。如果你进入版本目录,你会发现仅有”.git”目录,没有其他文件。版本库仅包含记录着版本历史的文件。

    Antwort
    0
  • 迷茫

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

    上面的人都说的太复杂了,3句话就可以说明白:
    1.git init 创建本地仓库(在工程目录下创建)
    2.git init --bare 创建远端仓库(在服务器或者工程目录以外路径都可以创建的备份仓库)
    工程commit到1中,push到2中;

    Antwort
    0
  • 阿神

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

    bare repo没有work tree

    Antwort
    0
  • 淡淡烟草味

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

    有本书是《git权威指南》可以看看,真的不错

    Antwort
    0
  • 曾经蜡笔没有小新

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

    `--bare
    Create a bare repository. If GIT_DIR environment is not set, it is set to the current working directory.`
    http://blog.csdn.net/feizxiang3/article/details/8065506

    Antwort
    0
  • 某草草

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

    从使用方面看:
    git init 用于本地代码库,跟文件夹下包括所有的源代码,git版本控制相关的文件在.git目录下;
    git init --bare 意思是建一个裸库,执行命令后,跟目录下只包括git版本控制相关的文件等,相对于上面.git文件夹下的所有文件。跟目录是不包括项目源代码的。
    一般来讲,作为远端备份或公共版本库时,应该使用git init --bare。

    Antwort
    0
  • StornierenAntwort