辛星浅析git init中的--bare选项,也就是裸仓库

通常如果一个仓库作为远程仓库使用的时候,我们初始化的时候通常是git  init  --bare,首先解释一下这个bare,它翻译成汉语即"裸的",他之会生成一类文件,用于记录版本库历史记录的.git目录下面的文件,而不会包含实际项目源文件的拷贝,因此该版本库不能称为工作目录(working  tree)。

当不使用--bare选项时,就会生成.git目录以及其下的版本历史记录文件,这些版本记录文件就存放在.git目录下,而使用--bare选项时,就不再生成.git目录,而只是生成.git目录下面的版本历史记录文件,这些版本历史记录文件也不再存放在.git目录下面,而是直接存放在版本库的根目录下面。

使用git init初始化的版本库用户也可以在该目录下执行所有git方面的操作,但是别的用户在将更新push上来的时候容易出现冲突。如果远端仓库正在使用某个分支,而我们又要把更新提交到这个分支上,就可能会出错。当然,如果我们是向远程仓库中的空闲分支上提交,还是不会有问题的。

我们通常的解决办法就是使用git  init  --bare来创建一个裸仓库,之所以叫做裸仓库是因为这个仓库只保存git历史提交的版本信息,而不允许用户在上面进行各种git操作,如果我们进行其他操作的话,会得到诸如This  operation  must  be  run  in  a  work  tree。

时间: 2024-10-11 06:12:16

辛星浅析git init中的--bare选项,也就是裸仓库的相关文章

辛星浅析git中的submodule

有时候,我们需要将一些通用的部分抽取出来做成一个公共库,它可以给别的工程使用,而公共代码库的版本管理是比较麻烦的.我们可以使用git中的submodule来做到这一点. 1.添加 为当前工程添加submodule,命令格式是:git   submodule   add   仓库地址    路径 在添加完成后,在当前工程路径下会生成一个名为".gitmodules"的文件,它记录了子模块的信息,添加完成之后,将子模块所在的文件夹添加到工程中即可. 2.删除 删除submodule,我们首

辛星浅析git中的版本回退

首先需要说的就是commit  id,它和svn不同,git的commit id不是1,2,3...这种递增的数字,而是一个SHA1计算出来的一个非常大的数字,它用十六进制来表示,因为git是分布式的版本控制系统,所以就只能用这种方式了. 在git中,我们用HEAD表示当前版本,上一个版本就是HEAD^,上上个版本就是HEAD^^,如果我们前100个版本就是HEAD后面跟100个^,但是我们通常不这么写,我们通常写成HEAD~100. 而且我们回退使用git  reset命令,比如我们要回退到上

辛星浅析git中的代码撤销与回退

1.回退到最近一次提交的状态使用  git  reset  --hard   HEAD 命令,这里的--hard表示删除自从该次提交后所有的修改记录,未跟踪的文件除外,如果需要保留目前的修改,则执行git  reset  --soft  HEAD. 2.回退代码到某次指定的提交状态,我们使用git  reset  --hard  <hashcode> 命令,这里的hashcode是该次提交的哈希码.git没有办法回退单个文件到某次提交状态,如果确实需要这么做,那么应该先取得某次提交时该文件的内

辛星浅析git中查看某个文件的历史

有时候我们在比对代码的时候,会看到一些改动,但是不清楚这个改动的具体内容的话,我们通常可以通过如下步骤来执行: (1)使用git  log来查看某个文件的变化,需要注意的是这里我们只关注某个文件的变化,而不是整个git库,否则就无从看起了. 我们在git  log后面接文件名即可,范例如下: [email protected]:/root/xin# git log --pretty=oneline MessageItem.java 27209385caf678abe878375a470f4edd

辛星浅析git blame的使用

git  blame可以显示该文件的修改.以及作者上次修改文件的内容.他不会告诉我们文件中被删除以及被替换的内容,要详细的知道,我们还需要配合git  diff的使用. 下面是我们在git中创建了一个aa文件,然后是三次commit提交,以及只属于工作目录的修改. 我们用git  blame来查看一下效果: $git blame aa ^2cae297 (xin 2013-06-02 17:56:14 +0800 1) The beginning is to learn git blame ^2

辛星浅析邮件服务中的几个概念

电子邮件最早出现于1960年,而基于网络的电子邮件最早则是出现于1971年,而中国的第一封电子邮件则是出现于1987年.电子邮件也作为早期的基于网络的通信方式被广泛的使用,虽然电子邮件的很多功能被即时通信所取代,但是在商业环境下电子邮件依然是主要交流方式. 首先是MUA的概念,它是Mail  User  Agent的简写,也就是邮件用户代理,用户通过MUA来发送和接收邮件,对于个人而言,一般使用网页方式来查看电子邮件,这些就是基于Web的MUA.常用的MUA软件有outlook.mac  mai

辛星浅析git reset和git revert

很多时候,我们有了误操作,这个时候就需要回退功能的出现,我们可以使用git reset和git  revert这两个功能. git  reset是指将当前head的内容重置,不会留任何痕迹.比如git  reset  --hard   HEAD~3会将最新的3次提交全部重置,就好像没有提交过一样.而--soft和--mixed.--hard会分别重置working  tree和index.HEAD. git   revert是撤销某次提交,但是这次撤销也会作为一次提交进行保存.

辛星浅析yaf框架中的类的自己主动载入问题

因为公司非常多项目都是基于yaf的,而非常多刚接触yaf的朋友问的第一个问题就是:yaf的自己主动载入是依照什么规则来的. 鉴于此.于是我特别开了一篇博文来记录一下. 首先在yaf中.models文件夹下的全部类名都须要以Model结尾.并且全部models和全部library下的类名都要依据所处等级加前缀,比方说我在Db文件夹下有个Mysql文件夹下有一个QueryGrammar.php文件,那么这个文件里的类名就应该是Db_Mysql_QueryGrammar,我们在实例化的时候直接使用这个

辛星浅析php变量中的优先级问题

因为php是一个脚本语言,因此它的过度的灵活性,会导致它在解析的时候会产生歧义,一般来说我们是要避免这些歧义的,这里来小小的举一个例子吧,朋友们不妨看看下面的代码会输出什么: <?php $var = 'hello'; $var_ = 'world'; echo "$var_$var_"; echo "<br />"; echo "{$var}_$var_"; 对于上面的代码,第一个echo永远会输出"worldwor