github学习

来源:互联网 发布:户外广告投放数据 编辑:程序博客网 时间:2024/06/09 18:01

  和svn类似,github是版本管理系统,但它是世界上最先进的分布式管理系统。它可以大大提高我们的工作效率。jQuery、bootstrap、react等都托管在github上,所以掌握github是必须的!!!

  git是如何诞生的呢?Linus在1993年开源之后,不断庞大,但后来不满足与其他的管理系统,于是Linus花了两周时间自己用C写了一个分布式版本控制系统,这就是Git!一个月之内,Linux系统的源码已经由Git管理了!牛是怎么定义的呢?大家可以体会一下。

  SVN是集中式管理系统,git是分布式管理系统,但是两者有什么区别呢?

  之前我使用的就是SVN,它是将版本库集中放置在中央服务器上,而干活的时候,就update下来,一天工作结束,最后一定要commit 。

  

  它最大的缺点是:必须联网才能完成上述操作。网速快了还好,网速慢的话,提交一个5M的文件可能就要好久去等待。

  而分布式版本控制系统是没有中央服务器的,每个人的电脑上都有一个完整的版本库,既然完整的版本库在自己电脑上,当然就不需要联网了,那多个人如何协作呢?比方说你在自己电脑上改了文件A,你的同事也在他的电脑上改了文件A,这时,你们俩之间只需把各自的修改推送给对方,就可以互相看到对方的修改了。

  git的优势不只是不用联网,更厉害的是强大的分支管理

  

  git可以安装在Linus、Mac OS x和 windows上,下面只介绍windows。

  

  去官网下载https://git-for-windows.github.io/,然后在开始菜单找到Git --Git Bash,然后弹出黑色命令框,说明安装成功, 如下所示:

  

  

  安装完成后,还需要最后设置如下(在gitbash中):

$ git config --global user.name "Your Name"
$ git config --global user.email "Your email"

  因为Git是分布式版本控制系统,所以,每个机器都必须自报家门:你的名字和Email地址。

 

  接下来就是创建版本库了,版本库又名仓库,英文名repository,可以理解为一个目录, 这个目录里的所有文件都会被Git管理起来, 每个文件的修改、删除都会被Git跟踪,以便以后找寻历史,甚至还原。

  重要:在windows下操作gitBash使用的是Linux命令。

http://blog.csdn.net/caz28/article/details/43450951

http://blog.sina.com.cn/s/blog_4d9c3fec0102w7g9.html

  首先,先找一个地方,创建一个空目录(这里我是用的是管理员cmd):

md learnt_git

  然后通过 cd learn_git进入。  

  再使用git init将之变成Git可以管理的仓库:git init。这样就可以创建一个本地仓库了,通过这个本地仓库,你就可以互作非为了。

 

 

  pull是指拉取(pull有拉的意思),fetch是指获取。两者的区别在于pull是fetch+merge。 也就是说,拉取会把你本地仓库中没有,而远程中仓库中有的更新写在你的本地中,而获取的用户就是来查看对于你本地仓库的状态来说远程仓库是否有更新,仅此而已,并不会使你的本地仓库发生改变。

  通过了解pull的概念就知道了为什么我们总是听说要 先pull,然后再 push,因为只有pull之后,我们才能解决可能会有的冲突,这样才能push。 也就是说,pull有时候可能是没有必要的。

 

  git中的clone 和 fork 又有什么区别呢?

  chone就是克隆一份到你的本地,而fork它会从别的远程仓库中克隆到你的远程仓库,所以,如果希望本地得到,就一定要克隆。当然这样的说法也是有问题的,因为,如果从你的远程仓库克隆下来,那么克隆在本地的仓库就会自动与远程仓库建立联系,但是如果直接从别人的仓库克隆,那么我们就不能对其做出更多的更改,甚至连git版本都无法管理。

  而对于比如我现在所在的团队中又有所不同,团队中的仓库就相当于自己的仓库,所以我们就可以直接克隆,并且对其进行相应的操作以达到合作的目的。

 

 

  在gitbash中,我们可以通过shift和ins组合键来粘贴到gitbash,通过ctrl和ins的方式复制gitbash中的内容。

 

  

 

  分支的概念要理解,一般最终文件在master分支,而经常变动的是紧挨着master的dev分支, 我们一般为了开发一个新的feature(功能)都是在dev的基础创建一个新的分支,然后再这个新分支上操作,一般而言,新分支必须在改动后时要commit,否则是不能删除或切换分支的,而也可以强行删除,那么就会丢失掉修改,强行删除使用命令git branch -D feature-vulcan ,这样就成功删除了。

 

  

  多人协作(这才是git教程中的重点) 总结

  

  当我们直接使用http协议获取到路径(这个路径无论是master还是dev都是同样的一个路径)后,将其git clone,然后,这时默认情况下,我们得到的是只有master分支的,所以,我们需要再在远程dev下检出一个新分支,然后再新分支上进行操作。

 

  sourcetree使用起来更为方便,先点击克隆,然后再在远程检出新分支即可。

0 0
原创粉丝点击