手记

git入门,先学会这几个姿势!

2017-07-06 21:41:1434802浏览

Rosen

1实战 · 8手记 · 14推荐
git是什么? 好吃么?

在《手把手从零打造企业级电商平台-前端实战》课程里用到了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教程

94人推荐
随时随地看视频
慕课网APP

热门评论

老师,为什么我git  clone git@git.oschina.net:"我的github账号"/project001.git  access denied啊

也刚学的git,我是在vs2017里用的,很方便,比svn好用,这个项目就用了,http://www.ofmonkey.com/

那老师我不知道代码写到什么时候适合提交到github,每次修改完一个类的时候就要提交,还是实现了一个功能之后统一提交多个修改的类?谢谢老师

查看全部评论