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 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的主要内容,如果未能解决你的问题,请参考以下文章

git init之后,没有.git后缀的文件

从Git Init的说起

git 子模块更新 --init --force --remote

git文件 取消init初始化

git init后添加远程仓库地址

如何完全删除使用 init 创建的 git 存储库?