现代的团队开发离不开Git这样的团队协作工具,公司搭建了Gitlab服务器,每天的工作也是不断在 git add
、git commit
、git pull
、git push
…… 回头看看,发现每天只是机械的敲着命令,没有思考也没有总结,那现在就开始总结吧。
Git是什么?
Git is a free and open source distributed version control system designed to handle everything from small to very large projects with speed and efficiency.
Git是一个自由开源的分布式版本控制系统,旨在快速、高效地处理从小型到大型项目的任何事情。
以上是Git官网的自白(如翻译有误请斧正),实质是版本控制(Wiki,另见)系统,特性是快速、高效。
为什么要用Git?
工具是意识的延展,Git-Flow展现了Git的灵魂。一个好的协作流程可以节省大量的沟通成本,而影响一个团队效率的根本就是(各种方式的)沟通。
Git解决的问题
- 版本控制
- 协同合作
- 正确地版本存储
- 恢复之前的版本
- 了解发生了什么
- 备份
- 代码同步
- 分支管理
与SVN的比较
基本用法
我在日常工作中使用最多的命令就是:
|
|
虽然是天天使用,但是并没有真正去了解每行命令,而且我把这写命令写到了一个shell脚本中,连”见面”的机会都没有了……下面就重新认识一下它们。
git status
:显示有变化的文件
git diff
:显示工作区和暂存区的差异
|
|
git add
:增加文件到暂存区
|
|
git commit
:提交暂存区到仓库区
|
|
git pull
:拉取远程仓库的变化,并与本地分支合并
|
|
git push
:推送本地分支变化到远程仓库
|
|
进阶用法
我最近也是在实践Git-Flow和更多Git命令,所以这个部分就推荐一些参考博客吧。
Git配置
用户信息配置
Git配置分为了全局的配置和项目范围的配置,全局配置使用的比较多的就是设置全局用户和邮箱:
|
|
但是由于自己有Github账号,也有公司Gitlab的账号,所以全局配置的用户名和邮箱不能满足不同账号提交时的用户信息。为了解决这个问题,我取消了全局的用户和邮箱的配置:
|
|
而是在每个项目中配置改项目的用户信息:
|
|
执行以上命令后,进入项目的 .git
文件夹,查看 config
文件会发现多了[user]
项:
|
|
这样配置之后,不同范围的项目用户信息就不会互相干扰了。
SSH配置
修改Git全局配置文件
除了用户信息之外,不同项目的SSH Key也是不同的,接下来就介绍怎么给不同项目配置不同的SSH Key。
在用户目录下找到 .ssh
文件夹,找到 .ssh
文件夹下的 config
文件,没有就新建一个,在其中添加如下配置:
|
|
生成SSH Key命令如下:
|
|
使配置生效
在具体项目的 .git
目录下找到 config
文件,做如下修改:
|
|
使用全局配置中的 Host
替换真实的服务器地址,这样Git才能识别。
结语
这次的总结只是将常用的操作梳理了一下,对常用的Git命令加深了了解。除此之外,Git还有很多概念和思想需要继续学习,今后的工作中,实践结合思考,加深对Git的理解,也继续把所得的收获分享给大家。