Git篇 快速团队开发

本人是一所本科院校大三学生,在校有自己的学生团队,在项目开发中,为了提高开发效率,采用了Git技术。现总结下git,欢迎大家互相交流。

在学习git之前,我们先来了解一下git的一些基本概念

1.git工作流程见下图

2.一些基本概念

.git目录:使用git init初始化一个git仓库时会生成.git隐藏目录,里面存储的是整个项目的文件改变记录等信息。

工作区:可以理解为本地的git仓库所在的目录也就是项目目录。

暂存区:所有通过git add命令添加的文件都存储在暂存区,其实就是.git目录下面的index索引文件中。

版本库:也就是整个git仓库。

三者的关系:工作区就是你的开发目录,所有的文件编辑通过git add添加到暂存区,然后通过git commit命令提交到本地git仓库,然后通过git push推送到远程git仓库。

常规的git仓库结构如下

git@git.xxx.com:user/project_name.git

|-master (主分支,和线上代码同步)

|-develop(开发分支,功能开发完成后先合并到develop,然后再讲develop合并到master)

|-feature(临时性分支(功能分支),比如开发某个功能可以新建一个feature分支,完成后将feature分支合并到develop)

|——— feature/update_online_pay_api

|——— feature/add_new_feature..

|——— …

|-release(临时性分支(预发分支),开发完成提测,新建release分支进行测试,完成后合并进master和develop)

|——— release/update_online_pay_api

|——— …

|-hotfix(临时性分支(热修改分支),一般用于紧急修改bug等短期任务时建立的分支,修改完成后合并到master和develop)    |——— hotfix/handler_pay_bug

|——— …

关于分支命名规则:见名知意,临时性分支可以使用’/’分隔,也可以使用’-‘分隔等,没有强制要求.

当你接到一个产品需求,开始着手开发的时候,git流程是这样的:

首先你需要把远程git仓库中的项目同步到你本地,流程如下:

cd ~/workspace/git/// 进入你个人的工作目录mkdir project_name// 新建一个目录用于存放代码,名称可以和远程仓库名称一样cd project_name// 进入你新建的目录git init// 使用git初始化这个目录为一个git仓库git remote add origin git@github.com:22th/oh-my-zsh.git// 关联本地仓库到一个远程仓库git fetch--depth=1// 更新远程仓库的一些信息到本地,比如分支信息等git checkout-bmaster origin/master// 检出一个分支master并关联远程的master分支git pull// 更新本地仓库代码

通过以上流程就可以将远程项目同步到本地,现在默认的是远程的master分支,你不可以在master分支修改代码,一般来说你也没有这个权限。 同步代码到本地之后,你需要根据业务需求,新建一个开发分支,名称更具你的需求来调整,比如你要开发一个新功能,那你就建一个feature-xxx分支,如果你是解决一个bug,你可以建一个hotfix-xxx分支。新建分支不建议从本地建,你应该从git仓库管理后台新建,然后再检出到本地。管理后台新建分支很简单,不说了。

然后你就将你新建的分支check到本地,命令如下:git checkout -b feature-xxx origin/feature-xxx

接下来就是你愉快的开发过程,在你自己的分支上开发,测试,然后提交,会用到的git命令如下:

git add// 将工作区修改添加到暂存区,加上 --all 参数表示将所有修改添加到暂存区git commit-m“msg”// 将暂存区的修改添加到版本库git push-uorigin feature-xxx// 将本地仓库中的修改推送到远程git status// 查看当前工作区间状态gitlog// 查看历史commitgit checkout--// 用最后一次commit的文件替换当前工作区间的文件git reset--hard// 丢弃工作区间所有修改,回滚到上一个commit状态git checkout<版本号>// 回滚到指定版本

功能开发玩,就需要提测并发布到线上了,流程如下

1、在git仓库管理后台新建release-xxx分支,基于你的feature-xxx分支,主要用于测试。

2、release-xxx测试OK之后,就可以将其merge到master和develop分支,一般是通过git仓库管理后台提交merge request,等待相关管理人员确认后合并到master,提交merge request之前,先merge一下master分支,保证master上新修改的代码和你同步。合并master的时候可能会产生冲突,找到冲突文件,解决并commit。冲突格式如下:

<<<<<<< HEADln -s ../statics xxx

=======ln -s ../statics statics>>>>>>> master

其中 «««< HEAD 和 ======= 之间的内容表示是你分支中代码,而 ======= 和 »»»> master 表示的是master分支中的代码。那么手动解决冲突的过程就是确认你要保留的代码,把其他的删除,也就是说如果你要保留你本地的代码,那么就是这样的:

<<<<<<< HEAD (删除)ln-s../statics xxx (保留)======= (删除)ln-s../statics statics (删除)>>>>>>> master (删除)

保留 «««< HEAD 和 ======= 中间的代码就OK,解决掉所有的冲突后git commit -am “解决冲突”。

3、好了,其他的工作就是运维人员来处理了。一般是这样的,release-xxx分支测试完成并解决所有冲突后,运维发布人员merge到master分支,然后通过git diff 608e120 4abe32e --name-only | xargs zip update.zip命令打包差异文件,然后发布这个差异文件包就可以啦,不需要所有文件都覆盖线上文件。

到这里,整个git项目开发流程就已经非常清楚了。git还有很多高级功能,比如文件对比、文件历史修改记录、关联多个远程仓库等等需要你慢慢去摸索了。使用git要灵活运用分支,因为git新建切换分支的成本非常低,因为git新建分支不是想svn那样吧整个目录复制一遍,然后通过索引文件等更高级的方式来处理,效率高太多。

在推荐个git图形化管理工具:

source tree, mac和windows都有。

If you liked this article and think others should read it, please followwebff

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,332评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,508评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,812评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,607评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,728评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,919评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,071评论 3 410
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,802评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,256评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,576评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,712评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,389评论 4 332
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,032评论 3 316
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,798评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,026评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,473评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,606评论 2 350

推荐阅读更多精彩内容