Git从入门到放弃我爱编程

git小结

2018-05-27  本文已影响41人  寒云暮雨


1、前言

Linus在1991年创建了开源的Linux,世界各地的开发者将自己的代码发给Linus,然后由他合并到linux当中。但是随着发展,工作量的增加,合并代码越来越麻烦。于是Linus选择了一个商业的版本控制系统BitKeeper,BitKeeper的东家BitMover公司出于人道主义精神,授权Linux社区免费使用这个版本控制系统。可以有人试图破解这个版本控制软件,他们决定收回软件的使用权,Linus可以向BitMover公司道个歉。然后,花了两周时间写了git,随后linux的源码就通过git进行管理。Git迅速成为最流行的分布式版本控制系统,尤其是2008年,GitHub(全球最大的同性社交网站)网站上线了,它为开源项目免费提供Git存储,无数开源项目开始迁移至GitHub,包括jQuery,PHP,Ruby等等。

2、常用版本控制工具对比

svn采用的是中央式存储,所有的代码都放在一个统一的中央仓库进行管理。做开发的小伙伴大都会遇到一个问题,公司断网了,我们的svn就不能用了,就是因为我svn的代码都在中央仓库进行存贮,离开了网络团队开发就无法进行。

svn的检出仓库的速度要比git慢很多。我们每次用svn提交代码,svn的服务器就会把所有的代码打包一次,放在仓库当中。有很多小伙伴会发现公司的svn服务器占用很大的空间,甚至一个项目达到几十G。

git采用的是分布式存储,这样他就足够灵活。我们即使在没有网络的情况下也可以继续我们的操作,等到有网络的时候再把我们的修改提交push到中央仓库里面,或者把小伙伴的代码pull到本地进行合并,同时我们也可以把我们本地新建的分支推送到中央服务器。

3、git的几个核心概念

本地:本地就是你的地方,如果你在一个目录下面进行初始化仓库(git init  mygit)就会有一个.git的文件(在linux或者Unix下面以.开头的文件是隐藏文件,你无法看到,可以用 ll -a 命令查看),这个拥有.git文件的目录就是你的本地

远端:远端直白一点就是你的git服务器,就是大家往里面最终push代码的地方

工作区:直白一点就是你工作写代码的地方。当你初始化一个项目或者从远端clone一个项目以后,git默认会checkout一个master分支作为默认的分支到工作区。当你切换分支的时候,git会把新的分支的代码checkout一份到工作区,同时把原来的分支提交到仓储区。例如你有两个分支,一个master主干,一个v1分支,你当前的工作区处于master主干,你要切换到v1分支,你执行git  checkout v1,git就会把master的代码放入仓储区,然后把v1的代码检出到工作区

仓储区:就是你存放代码的地方。你每次的提交都会提交到仓储区,你的分支也在仓储区放着。仓储区和远端的git服务器有一定的上下游关系。团队合作当中,你要想把你的代码最终分享给你的小伙伴,你就需要把你的仓储区的代码push到远端(有的小伙伴说,我可以丢文件给他,看我鄙视的眼神),这样小伙伴们就可以pull下来的你的代码进行合并了。

分支:分支就是在我们已有的分支上或者已有的某次提交拉出来的枝杈,他保留了之前所有的提交和修改。可以很方便的让我们开发新功能,修复bug,同时又不影响他人的继续开发。具体可以参考我后面写的git工作流(看心情,看公司忙不忙)

提交:我们每次修改之后的commit叫做提交,很多用svn转过来的小伙伴在这里都会很迷糊。svn的提交就是把你的代码提交到了远程的svn服务器(网络不好还是失败,捂脸),而git的提交只是提交了本地的仓储区,只有执行了push才会把代码真正提交到远程服务器,因为svn是中央式,git是分布式的。

暂存区:如果我们想把一个文件或者目录加入版本控制,可以执行 git add . 或者 git add 文件名称 ,这样会把我们新加入的文件或者目录放入暂存区,用git checkout 文件名 可把放入暂存区的文件回滚到修改前的版本

上一篇 下一篇

猜你喜欢

热点阅读