谈谈 Git

谈谈 Git

Git是一个开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目。它是Linus Torvalds为了帮助管理Linux内核开发而开发的一个开放源码的版本控制软件。Git与常用的版本控制工具CVS,Subversion等不同,它采用了分布式版本库的方式,不必服务器软件支持。

1.集中式vs分布式

CVS和SVN都是集中式的版本控制系统,而Git是分布式控制系统,集中式和分布式版本控制系统有什么区别呢?

集中式版本控制系统:版本库是集中存放在中央服务器的,而干活的时候,用的都是自己的电脑,所以要先从中央服务器取得最新的版本,然后开始干活,干完活了,再把自己的活推送给中央服务器。

 集中式版本控制系统最大的毛病就是必须联网才能工作,如果在局域网内还好,带宽够大,速度够快,可如果在互联网上,网速慢的话,可能提交一个10M的文件就需要5分钟。

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

和集中式版本控制系统相对 ,分布式版本控制系统的安全性要高很多,因为每个人电脑里都有完整的版本库,某一个人的电脑坏掉了不要紧,随便从其他人那里复制一个就可以了。而集中式版本控制系统的中央服务器要是出了问题,所有人都没法干活了。

2.创建版本库

初始化一个Git仓库,使用git init命令。

添加文件到Git仓库,分两步:

  • 使用命令git add <file>,注意,可反复多次使用,添加多个文件;
  • 使用命令git commit -m <message>,完成。

注:

(1)git add 命令实际上就是把要提交的所有修改放到暂存区(Stage),然后,执行git commit 就可以一次性把暂存区的所有修改提交到分支。

(2)每次修改,如果不用git add 到暂存区,那就不会加入到commit中。

 

3.标签管理

发布一个版本时,我们通常先在版本库中打一个标签(tag),这样,就唯一确定了打标签时刻的版本。将来取某个标签的版本,就是把那个打标签的时刻的历史版本取出来。所以,标签也是版本库的一个快照。

tag说白了就是一个让人容易记住的有意义的名字,它跟某个commit(分支)绑在一起。

  • git tag <tagname>:用于新建一个标签,默认为HEAD,也可以指定一个commit id;
  • git tag -a <tagname> -m "blablabla...":指定标签信息;
  • git tag:查看所有标签。

4.其他命令

  • git diff:查看修改内容。
  • git status:查看当前仓库的状态。
  • git log:显示从最近到最远的提交日志。
  • git checkout --file:丢弃工作区的修改。git checkout 其实是用版本库里的版本替换工作区的版本,无论工作区是修改还是删除,都可以“一键还原”。
  • git reset HEAD <file>:不但改乱了工作区某个文件的内容,还添加到了暂存区,想丢弃修改,分两步,第一步用该命令,第二步用git checkout --file。
  • git rm:用于删除一个文件。
  • git branch -D <name>:强行删除命令,用于丢弃一个没有被合并过的分支。
  • git remote -v:查看远程库信息。
  • git push origin branch-name:从本地推送分支。如果推送失败,先用git pull抓取远程的新提交。
  • git branch --set-upstream branch-name origin/branch-name:建立本地分支和远程分支的关联。

5.GitHub

我们一直用GitHub作为免费的远程仓库,如果是个人的开源项目,放到GitHub上是完全没问题的。其实GitHub还是一个开源协作社区,通过GitHub,既可以让别人参与你的开源项目,也可以参与别人的开源项目。在GitHub上,利用Git极其强大的克隆和分支功能,人们可以自由参与各种开源项目。

注:在参与一个开源项目时,一定要从自己的账号下clone仓库,这样才能推送修改。如果从作者的仓库地址克隆,由于没有权限,将不能推送修改。

6.码云

使用GitHub时,国内的用户经常遇到的问题是访问速度太慢,有时还会出现无法连接的情况。

如果希望体验Git飞一般的速度,可以使用国内的Git托管服务——码云(gitee.com)。

 

下面是Git Cheat Sheet:

https://gitee.com/liaoxuefeng/learn-java/raw/master/teach/git-cheatsheet.pdf

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值