这里以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分支的请求,管理员合并后,我们的分支内容就可以上线了。