zoukankan      html  css  js  c++  java
  • git init和git init –bare的区别:

    感谢原文作者:ljchlx
    原文链接:https://blog.csdn.net/ljchlx/article/details/21805231

    git init 和 git init –bare 的区别

    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 init初始化的版本库用户也可以在该目录下执行所有git方面的操作。但别的用户在将更新push上来的时候容易出现冲突

    使用git init 作为远程库 的冲突示例

    远端与本地只是看情况而定,毕竟Git是分布式的。

    “远端”
    比如有用户在该目录(就称为远端仓库)下执行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仓库的原因。

  • 相关阅读:
    UIView+ViewController.h 点击控制器上视图,使视图push下个视图控制的封装
    Touch Demo
    layoutSubviews与drawRect
    UI NS CG CF 区别
    CALayer
    关于CALayer的困惑
    pypy 对接阿里短信平台
    mysql去掉默认值
    GCC升级
    jemalloc 测试
  • 原文地址:https://www.cnblogs.com/tfxz/p/12823695.html
Copyright © 2011-2022 走看看