在《手把手从零打造企业级电商平台-前端实战》课程里用到了git,很多还没参加过公司项目开发的同学就会很疑惑,git是什么?git好吃么?这货是不是我们斗图的图片?哦!不对!那是gif!那TM git到底是什么?!
我们可以把git理解成我们管理代码的工具,把代码找个远程服务器备份一下,当我们电脑死翘翘的时候,就不用害怕代码丢了。当然把git理解成代码备份工具是委屈它了,git更厉害的功能是版本管理,他可以把每个版本都存起来,这样就能方便找到各个历史版本。再加上它对版本的一些设计,比如分支开发,分支合并和分支回滚等操作,能方便的让多人参与同一个项目的开发,更符合现在团队作战的开发方式。
git从表面看起来并不是一个很难用的东西,但要知道git的设计和原理还是有不少内容的,出本书的话怎么也能讲上几百页吧。但是我们如果单纯的把git当工具来使用的话,并不是很难入门。我们这篇文章的目的也是让大家尽快了解git,早点上手,而原理性的东西用熟了以后再看会更容易理解。我们下来找几个最常遇到的场景来说一下git的用法。
场景1:我要开始一个新项目,想用git管理代码这里以git.oschina.net为例(oschina可以免费创建私有项目,github创建私有得花钱)。
第一步,我们需要先注册个git帐号,这里就不说了。这个oschina提供的git服务其实就是给我们一个空间,我们的代码可以传上去由oschina保管。
第二步,新建项目,填上项目名称,git地址等信息以后,就可以新建一个项目了。
第三步,填加ssh的key,添加key的作用是允许你的电脑访问git仓库。如果git项目是私有的,那么就要指定谁可以访问谁不能访问。我们把自己计算机上的ssh key添加到git项目上,就表示我们电脑里的key能访问了,可以理解成key的白名单。配置方法如下:
# 邮箱地址填注册git时用的邮箱,然后按3个回车。
ssh-keygen -t rsa -C "xxx@happymmall.com"
# 在git.oschina的项目里添加公钥,查看公钥内容:
cat ~/.ssh/id_rsa.pub
第四步,配置本地的git选项,可以在用户目录下,用户目录下,用户目录下!新建一个.gitconfig文件,把下面的内容放里面。其中的name是在提交代码时使用的名称,可以随意指定,还有一个是email,这个email一定要和注册git时使用同一个。
[user]
name = Rosen
email = xxx@happymmall.com
[alias]
co=checkout
ci=commit
st=status
pl=pull
ps=push
dt=difftool
l=log—stat
cp=cherry-pick
ca=commit -am
b=branch
[push]
default = simple
这个配置文件中的alias是一些命令的快捷键,比如切换分支是git checkout xxx,如果配置了alias,就可以直接输入git co xxx,这两个命令是等价的。
push一项配置成simple,表示是在push的时候只把当前分支推送到远程对应的分支上。这个也可以不配置,因为git2.x版本以后,默认的就是simple模式。
第五步,从远程拉下代码,这git项目就算建好了。
# 使用项目的ssh形式的地址
git clone xxx
场景2:我要开始开发了,要怎么玩?
进入开发前,要先了解git的分支使用规范。当我们项目clone下来以后,默认会处在master分支上,也就是git的默认分支。通常我们是不在这个分支上做开发的,如果更规范一点,master分支会对开发人员设置成只读的,最终由上线人员把要上线的代码合并到master分支上。这时候我们就要做一个自己的开发分支。执行如下:
# 切换到master分支
git checkout master
# 拉取最新代码
git pull
# 以master分支为基础,新建本地分支,新分支名以mmall_v1.0为例
git checkout -b mmall_v1.0
# 在远程建立对应的分支,只有新建分支时需要执行这步,以后只需要git push
git push --set-upstream origin mmall_v1.0
然后就可以在新分支上开始写代码。
场景3:我要在一个已有的分支上开发点东西因为是已有分支,就不用自己新建了,直接切换到指定分支,这里还是以mmall_v1.0为例。
# 切换分支
git checkout mmall_v1.0
# 拉取当前分支最新代码
git pull
然后还是一样的,就可以进入开发了。
场景4:开发到一定程度,想看看改动了什么内容# 看文件的改动
git status
# 看文件内容的变动
git diff
场景5:代码开发完成了,想提交代码
# 首先是追踪变更的文件
git add .
# 然后提交到本地
git commit -am '我是提交的说明'
# 提交到远程
git push
场景6:当前分支代码都开发完了,准备提交上线
在上线的时候,一般是由管理员或发布人员把开发分支的代码合并到master分支上,上线前我们要先把远程master最新的代码合并到我们的分支上再提交,才能保证我们的开发分支版本高于master分支。如果不这么干,有多个人开发的话,就有可能造成A发布了一个版本,等B发布的时候会把A发布的内容冲掉。
# 合并远程分支
git merge origin master
# 注意:如果发现merge的结果里有CONFLICT,就表示当前分支和远程master分支有文件冲突,我们要手动解决一下冲突再做一次提交才可以。
# 没冲突或解决完冲突后,提交到当前分支的远程
git push
merge完成后,就可以做提交了,通常使用pull request提交合并到master分支的请求,管理员合并后,我们的分支内容就可以上线了。
最后,推荐一个比较全面的git教程文章:git教程
热门评论
老师,为什么我git clone git@git.oschina.net:"我的github账号"/project001.git access denied啊
也刚学的git,我是在vs2017里用的,很方便,比svn好用,这个项目就用了,http://www.ofmonkey.com/
那老师我不知道代码写到什么时候适合提交到github,每次修改完一个类的时候就要提交,还是实现了一个功能之后统一提交多个修改的类?谢谢老师