0

0

详解Git-团队迅速开发神器

黄舟

黄舟

发布时间:2017-03-21 09:56:38

|

1558人浏览过

|

来源于php中文网

原创


本人是一所本科院校大三学生,在校有自己的学生团队,在项目开发中,为了提高开发效率,采用了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 -b master origin/master // 检出一个分支master并关联远程的master分支
git pull // 更新本地仓库代码

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

魔方网站开发包WDK企业完整版 wdk2.02
魔方网站开发包WDK企业完整版 wdk2.02

魔方网站开发包WDK(Website Development Kit)2.0 是适应互联网网站建设的发展的需求,在网站开发技术日渐成熟和普及的前提下,为广大建站团队,互联网创业者,网站建设专业学习者及广大建站爱好者提供的一套实用、易用且能掌握了解网站建设、推广、运营的普及型开发包。网站建设者可以轻松、迅速且高效的构建拥有自己的行业门户、企业展示和个人主页的网站。当前绝大多数的建站系统都采用模块化建

下载

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

git add  // 将工作区修改添加到暂存区,加上 --all 参数表示将所有修改添加到暂存区
git commit -m “msg” // 将暂存区的修改添加到版本库
git push -u origin feature-xxx // 将本地仓库中的修改推送到远程
git status // 查看当前工作区间状态
git log // 查看历史commit
git 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

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

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

保留 «««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 follow webff

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
全国统一发票查询平台入口合集
全国统一发票查询平台入口合集

本专题整合了全国统一发票查询入口地址合集,阅读专题下面的文章了解更多详细入口。

19

2026.02.03

短剧入口地址汇总
短剧入口地址汇总

本专题整合了短剧app推荐平台,阅读专题下面的文章了解更多详细入口。

27

2026.02.03

植物大战僵尸版本入口地址汇总
植物大战僵尸版本入口地址汇总

本专题整合了植物大战僵尸版本入口地址汇总,前往文章中寻找想要的答案。

15

2026.02.03

c语言中/相关合集
c语言中/相关合集

本专题整合了c语言中/的用法、含义解释。阅读专题下面的文章了解更多详细内容。

3

2026.02.03

漫蛙漫画网页版入口与正版在线阅读 漫蛙MANWA官网访问专题
漫蛙漫画网页版入口与正版在线阅读 漫蛙MANWA官网访问专题

本专题围绕漫蛙漫画(Manwa / Manwa2)官网网页版入口进行整理,涵盖漫蛙漫画官方主页访问方式、网页版在线阅读入口、台版正版漫画浏览说明及基础使用指引,帮助用户快速进入漫蛙漫画官网,稳定在线阅读正版漫画内容,避免误入非官方页面。

13

2026.02.03

Yandex官网入口与俄罗斯搜索引擎访问指南 Yandex中文登录与网页版入口
Yandex官网入口与俄罗斯搜索引擎访问指南 Yandex中文登录与网页版入口

本专题汇总了俄罗斯知名搜索引擎 Yandex 的官网入口、免登录访问地址、中文登录方法与网页版使用指南,帮助用户稳定访问 Yandex 官网,并提供一站式入口汇总。无论是登录入口还是在线搜索,用户都能快速获取最新稳定的访问链接与使用指南。

114

2026.02.03

Java 设计模式与重构实践
Java 设计模式与重构实践

本专题专注讲解 Java 中常用的设计模式,包括单例模式、工厂模式、观察者模式、策略模式等,并结合代码重构实践,帮助学习者掌握 如何运用设计模式优化代码结构,提高代码的可读性、可维护性和扩展性。通过具体示例,展示设计模式如何解决实际开发中的复杂问题。

3

2026.02.03

C# 并发与异步编程
C# 并发与异步编程

本专题系统讲解 C# 异步编程与并发控制,重点介绍 async 和 await 关键字、Task 类、线程池管理、并发数据结构、死锁与线程安全问题。通过多个实战项目,帮助学习者掌握 如何在 C# 中编写高效的异步代码,提升应用的并发性能与响应速度。

2

2026.02.03

Python 强化学习与深度Q网络(DQN)
Python 强化学习与深度Q网络(DQN)

本专题深入讲解 Python 在强化学习(Reinforcement Learning)中的应用,重点介绍 深度Q网络(DQN) 及其实现方法,涵盖 Q-learning 算法、深度学习与神经网络的结合、环境模拟与奖励机制设计、探索与利用的平衡等。通过构建一个简单的游戏AI,帮助学习者掌握 如何使用 Python 训练智能体在动态环境中作出决策。

3

2026.02.03

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Git 教程
Git 教程

共21课时 | 3.3万人学习

Git版本控制工具
Git版本控制工具

共8课时 | 1.5万人学习

Git中文开发手册
Git中文开发手册

共0课时 | 0人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号