git init与git init --bare
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了git init与git init --bare相关的知识,希望对你有一定的参考价值。
参考技术A 今天在创建git仓库时,想到了加不加--bare参数的问题,之前印象中知道是有区别的,具体区别在哪一时还真说不清了,这篇文章就总结一下。首先,这两个命令都是初始化一个空的git仓库,分别用这两个命令创建两个示例分析一下:
可以看到,初始化后的目录结构是不一样的,加了bare参数后不会在根目录创建.git文件夹,而把.git下面的文件直接拿到根目录里来了。再来看一下配置上有什么不同:
可以看到有两项配置不一样,从字面意思也基本能猜到代表什么意思。
加bare参数创建的仓库(repo.git)一般叫“裸仓库”,里面没有工作区的概念,即你不能直接在这样的仓库里进行正常的git命令操作;反之,不加bare参数创建的仓库(repo)就可以直接在上面进行git操作。如果是这样的话,那“裸仓库”还有什么用呢?我们先来看两个示例,分别clone上面创建的两个仓库,然后修改、提交并push到远程仓库:
可以发现,并不能推送修改到“非裸仓库”,提示里也给出了说明。再来试试裸仓库的情况:
推送修改到“裸仓库”就一切正常,这也正是裸仓库存在的意义, 裸仓库一般情况下仅作为远程仓库使用。个人理解,这样主要是为了维护远程仓库的“干净”,考虑这个场景,如果有人在远程仓库做了git操作,而你往上提交推送的时候必然会产生很多不必要的冲突。而将远程仓库赋予bare属性,大家沿着同一个准线往上提交推送,管理起来就方便多了。所以,我们在GitHub等这样的网站上看到的项目都是bare仓库。
使用git init --bare “repo”可以创建一个裸仓库,并且这个仓库是可以被正常clone和push的,裸仓库不包含工作区,所以不能在裸仓库上直接提交变更。
Git常用命令收集
Git 教程链接git教程
常用git命令
服务器创建git库 git init --bare /path/xxxx.git 本地初次使用 $ git config --global user.name "John Doe" $ git config --global user.email [email protected] $ git config --global merge.tool vimdiff 新增分支: 以本地版本库为基准创建分支 git branch xxxx 第一次提交: git push origin xxxx 以远程版本库为基准创建分支 git co origin/online -b xxxx git co xxx 切换分支至xxx git br 查看当前所在分支 git st 查看当前所在分支状态 git log -g 查看当前分支log git reset --hard origin/master 恢复push前的版本 git reset —-hard xxxx 恢复当前分支至xxxx版本 git whatchanged 当前分支修改历史 git br -D xxxx 强制删除分支xxxx git fetch 从远程获取最新版本到本地,但不会merge git log -p xxx..origin/xxx 比较本地分支xxx与远程xxx的差异 git diff xxx 同上 git merge origin/xxx 合并本地分支xxx与远程xxx git pull 相当于git fetch和git merge 》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》 1.查看提交记录: $path = 具体的文件路径 git log --pretty=oneline $path #–pretty根据不同的格式展示提交的历史信息 git log --pretty=fuller -2 $path #以更详细的模式输出提交的历史记录前两个 2.撤销改动的文件 git checkout -- $path 3.分支创建和删除 创建dev分支,然后切换到dev分支:git checkout -b dev 删除dev分支:git branch -d dev
以上是关于git init与git init --bare的主要内容,如果未能解决你的问题,请参考以下文章