git init
用”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 –bare
使用”git init –bare”方法创建一个所谓的裸仓库,裸仓库是因为这个仓库只保存git历史提交的版本信息,不会包含项目源代码目录,同时不允许用户在该仓库下进行各种git操作,如果你硬要操作的话,只会得到下面的错误(”This operation must be run in a work tree”).
bare repository主要是用作分享版本库。开发者使用bare repository可以向其他人分享存储在本地的版本库,以便于实时分享代码更新和团队协作 。通过使用”git push”命令,你可以将你的本地更新提交至“中心版本库”。其他开发者可以使用“git pull”命令者接受你提交的版本更新。如果你正在一个多人协作的项目团队或者同一个项目需要在不同电脑上面完成的时候,bare repository可以满足你的分布式开发需求.
git init仓库适合个人开发
git init –bare适合多人协作开发