一、Git简介
Git是一个开源的分布式版本控制系统,能够跟踪文本文件的变化。其他的本控制系统有很多,比如SVN,这里稍微讲下SVN和Git的一些区别。Git是分布式的,而SVN是集中式的,分布式的Git客户端都有一个完整的版本库,这样就数据就更加安全,任何一个版本库丢失都可以从远程拉取,而且Git不需要联网就能提交代码,等能连上远程仓库时再推送到远程;另外Git速度相对会快很多,有些操作Git只是移动了指针而已;还有就是Git把内容按元数据方式存储,而SVN是按文件,等等区别这里就不详细讲解,本文的目的是结合项目中团队协作的常用Git指令,让读者快速上手Git,并理解其中的大致原理。当然如果有兴趣可以深入了解Git的底层原理。
二、Git的几个工作区
1、工作区:工作区就是一个目录,比如你项目的目录,以后你要在这里面修改文件;
2、版本库:当在某个文件夹下执行git init指令的时候,Git会在该目录下创建一个.git的隐藏文件夹,这个隐藏文件夹就是Git的版本库,Git就是根据这个目录来跟踪管理版本库的。
3、暂存区:在版本库里面有一个很重要的区域叫暂存区,当我们执行git add时,就是将变动的文件提交到暂存区。
这是几个区域的的简单结构如下
三、Git在工作中常用的指令
这里不会详细讲解每个指令,网上其他教程讲的很详细,本文只是根据工作中常用的指令来简易入门的,掌握这些指令就可以应付工作中的大部分内容。
1、配置用户名邮箱
git config --global user.name 用户名
git config --global user.email 邮箱
这个在远程提交记录的时候看到是谁提交的,包括后续项目构建部署导致的错误可以根据提交记录来看是谁弄挂的,所以安装Git的时候就可以配置下这两项。
2、克隆代码到本地
git clone 远程仓库地址
执行完这条指令,就将远程代码下载到本地了,而且本地仓库就和远程仓库就已经对应了。
3、查看变更、修改及推送到远程
git status
git add 文件(或者git add .)
git commit -m "提交说明"
git push
上次提交到目前本地变更的文件可以通过git status来查看。git add将变更文件提交到暂存区,add指令可以执行多次。git commit就是将变更记录提交到当前分支上,git push就是将当前分支代码推送到远程分支。
4、本地远程代码不一致,拉取代码,并自动建一个分支并切换到该分支,然后进行merge,相当于git fetch加git merge,-r参数使提交记录是一条直线。
git pull -r
5、拉取代码出现冲突。首先手动修改冲突文件,解决冲突,然后执行
git add 冲突文件
git rebase --continue
git push
6、分支管理
分支策略不同的公司有不同的策略,一般是分支开发,主分支发布。当不同团队上线时间不一致的时候,为了不相互影响,一般会切分支。
创建分支、切换分支
git branch 分支名称
git checkout 分支名称
上面两条等价于这条,创建分支并切换到该分支
git checkout -b 分支名称
查看分支,-a表示查看远程分支
git branch -a
四、Git的一些使用心得
要熟悉Git的一些原理,每一条指令对应文件是怎么变化的,这样遇到问题会知道如何解决;每次提交前diff自己的代码,避免提交错误的代码,尽量多次提交,比如你修了一个bug又新增了一个功能,那么这两部分代码分开提交,这样就会让别人清楚你的提交干了什么,而且每次提交必须要加上提交的message,说明这次提交做了什么;遇到冲突一定要搞清楚原因,不能随意丢弃别人的代码;下班回家前整理好自己的工作区,该撤销的撤销,该提交的提交,不然第二天工作区会变得很乱。