git init 和 git init –bare 的区别

git initgit

用”git init”初始化的版本库(称之为work tree(工做目录))将会生成“.git“版本库目录(记录版本历史),工做目录包含有版本历史目录“.git”和项目源文件目录,你能够在工做目录修改你的源文件并使用”git add”和”git commit”命令进行版本管理,可是别的开发者没法push到你的仓库.分布式

可是你能够修改.git/config添加以下代码:
   [receive]
   denyCurrentBranch = ignore
或执行:git config receive.denyCurrentBranch ignore  别人就能够push了,但别的用户在将更新push上来的时候容易出现冲突.开发

例如:远程仓库上两个分支master1,master2,远程用户正在使用master1,这时候如何其余用户向master1分支推送代码git push origin master:master1

因而乎出现由于远端仓库的用户正在master1的分支上操做,而你又要把更新提交到这个maste1r分支上,就出错了。
 团队协作


git init –bareit

使用”git init –bare”方法建立一个所谓的裸仓库,裸仓库是由于这个仓库只保存git历史提交的版本信息,不会包含项目源代码目录,同时不容许用户在该仓库下进行各类git操做,若是你硬要操做的话,只会获得下面的错误(”This operation must be run in a work tree”).io

bare repository主要是用做分享版本库。开发者使用bare repository能够向其余人分享存储在本地的版本库,以便于实时分享代码更新和团队协做 。经过使用”git push”命令,你能够将你的本地更新提交至“中心版本库”。其余开发者可使用“git pull”命令者接受你提交的版本更新。若是你正在一个多人协做的项目团队或者同一个项目须要在不一样电脑上面完成的时候,bare repository能够知足你的分布式开发需求.ast

 

git init仓库适合我的开发版本管理

git init –bare适合多人协做开发方法

相关文章
相关标签/搜索