一、 分支管理

使用 git 进行源代码管理,一般将某个项目的所有分支分为以下几条主线

1. Master

顾名思义,既然名字叫 Master ,那么该分支就是主分支的意思。 master 分支永远是production-ready 的状态,即稳定可产品化发布的状态。

2. Develop

这个分支就是我们平常开发的一个主要分支了,不管是要做新的 feature 还是需要做bug fix ,都是从这个分支分出来做。在这个分支下主要负责记录开发状态下相对稳
定的版本,即完成了某个 feature 或者修复了某个 bug 后的开发稳定版本。

3. Feature branches

这是由许多分别负责不同feature 开发的分支组成的一个分支系列。 new feature 主要就在这个分支系列下进行开发。当功能点开发测试完毕之后,就会合并到 develop
分支去。

4. release branches

这个分支系列从 develop 分支出来,也就是预发分支。在预发状态下,我们往往会进行预发环境下的测试,如果出现缺陷,那么就在该 release 分支下进行修复,修复完毕测试通过后,即分别并入master 分支后 develop 分支,随后 master 分支做正常发布。

5. Hotfix branches

这个分支系列也就是我们常说的紧急线上修复,当线上出现bug 且特别紧急的时候,就可以从 master 拉出分支到这里进行修复,修复完成后分别并入master 和 develop
分支。

二、 工作原理

Git 的工作方式:
也就是说, 每次提交版本变动的时候, git 会保存一个快照(snapshot)。如果文件没有被更改,git 也不会再次保存,而是提供一个到原来文件的链接。这样一来, git 更像是一个小型的文
件系统。此外, git 的所有操作都可以是本地的,仅仅在将新版本的内容上传到服务器上时才需要连接网络。

Git 目录 (repository )是 Git 保存元数据和对象数据库的地方。这也是 Git 最重要的部分。

工作目录 (working directory )是项目某个版本的内容。

暂存区 (staging area)是一个简单的文件,通常包含在 Git 目录中。其中存储了将要进入下一次提交的信息。
Git 的基本工作流程如下:
修改 Git add 暂存 Git commit 提交

1.在工作目录中修改文件。

2.标识(stage)文件,并将文件快照添加到暂存区。

3.执行 commit ,将获取暂存区中的文件,并将快照永久保存到 Git 目录中。

三、 常用命令

  1. 创建工程

    git init

  2. 提交修改

    git add 后就从修改变为暂存
    git commit 后就从暂存变为提交。

  3. 提交规范

在commit时,如果有对应PR(需求项),请在第一行写上 PR 号,然后再描述信息(另起行),并把涉及到改动的文件名附上。

1. 回溯

改错了,不过还没有git add

git reset --hard
改错了,已经git add
git reset -q [files]
(其实就是git add 的反向操作 )
改错了,已经git commit
git reset --soft HEAD^
(其实就是git commit 的反向操作 )
已经git commit ,忘记写注释(PR)或者漏提交了部分文件
如果添加注释可以直接执行命令 git commit --amend ,填写注释保存,如果添加文件先执行 git add 后执行 git commit --amend

2. 创建分支

查看分支

git branch

切换分支

git checkout [branch name]

创建分支(在当前代码的基础上)

git branch [branch name]

  1. 合并分支
    先检出目标分支再把其他分支合并进去

    git checkout [branch name]

git merge [other_branch]

3. 删除分支

git branch -d [branch name]
(不能删?用这个! )

git branch -D [branch name]

4. 标签管理

git tag v1.0

5. 远程操作

克隆远程库

git clone

定义远程库

git remote

从远程库取回更新

git fetch

从远程库取回更新并合并

git pull
推送至远程库
git push

四、 操作流程 (本地 )

1. 准备工作

初始化目录

git init

git add readme.md

git commit -m 'master init'

然后从 master 分支中拉出 develop 分支

git checkout -b develop

2. 功能点开发

有新的需求或功能点需要开发时,从最新 develop 分支中拉出一个 feature 分支

git checkout -b [feature name]

完成 feature 开发后需要对 feature 分支进行合并操作

git checkout develop

git merge [feature name]

  1. 处理冲突
    当合并分支出现冲突时,需要手动将文件冲突的部分进行修改。对修改后的文件保存
    并重新提交。
  2. 产品发布
    当 develop 分支已经达到了一个可以发布的状态,将最新的 develop 分支拉出来成
    为一个 release 分支

git checkout -b release

假设需要一些环境配置,新建配置文件并提交

git add release.config

git commit -m 'release1'

当遇到一些预发环境下的 bug ,这个时候我就直接在 release 分支下进行修复演进,

如果 bug 问题很大, 则需要重新并入develop 中,拉出新的 feature 进行开发重构。

如果预发一切正常,需要将 release 分支同时并入master 分支和 develop 分支,

master 分支供线上发布, develop 分支供下次开发演进。

git checkout master

git merge [release name]

git checkout develop

git merge [release name]

  1. 线上 bug 热修复

当碰到一些线上意想不到的 bug ,需要紧急修复时,就直接从 master 分支拉出

hotfixes 分支进行修复。

git checkout master

git checkout -b [hotfix name]

bug 修复完毕,测试通过后我们将分支合并到 master 和 develop 中去。

git checkout develop

git merge [hotfix name]

git checkout master

git merge [hotfix name]

五、 远程操作

远程操作的 5 个常用命令

git clone

git remote

git fetch

git pull

git push

  1. 从远程主机克隆一个版本库

git clone < 版本库的网址>

该命令会在本地主机生成一个目录,与远程主机的版本库同名。

  1. 管理主机名

为了便于管理, Git 要求每个远程主机都必须指定一个主机名。
不带选项的时候, git remote 命令列出所有远程主机。

  1. 将更新取回本地

git fetch < 远 程主机名 >

默认情况下, git fetch 取回所有分支( branch )的更新。如果只想取回特定分支的

更新,可以指定分支名。

git fetch < 远 程主机名 > < 分支名 >

git branch 命令的 -r 选项,可以用来查看远程分支, -a 选项查看所有分支。

取回远程主机的更新以后,可以在它的基础上,使用 git checkout 命令创建一个新的分支。

git checkout -b newBrach origin/master

也可以使用 git merge 命令或者 git rebase 命令,在本地分支上合并远程分支。

git merge origin/master

或者

git rebase origin/master

  1. 取回更新同时合并到本地

git pull 命令的作用是,取回远程主机某个分支的更新,再与本地的指定分支合并。

git pull < 远 程主机名 > < 远 程分支名 >:< 本地分支名 >

如果远程分支是与当前分支合并,则冒号后面的部分可以省略。

git pull origin next

上面命令表示, 取回 origin/next 分支, 再与当前分支合并。 实质上, 这等同于先做 git fetch ,再做 git merge。

git fetch origin

git merge origin/next

Git源代码管理的更多相关文章

  1. Git 源代码管理工具

    Git 源代码管理工具 Git基本信息 Git :Git是一个“分布式”的版本控制工具 Git的作者是Linux之父 Linus Benedict Torvolds,当初开发Git仅仅是为了辅助Lin ...

  2. git源代码管理工具

    git是一款源代码管理工具 是分布式版本管理工具 分布式管理必须先在本地提交然后才能提交到服务器: svn集中式版本管理工具 集中式版本管理工具离开服务器就做不了版本管理: 初始化仓库 1.用git初 ...

  3. IOS Git源代码管理工具

    .新建一个“本地仓库” $ git init .配置仓库 >告诉git你是谁 git config user.name lnj >告诉git怎么联系你 git config user.em ...

  4. VS2019取消git源代码管理

    VS2019->工具->选项->源代码管理->插件管理 详见下图

  5. VS2015 Git 源代码管理工具使用记录

    1. 首先到源代码托管平台申请个账户:https://git.oschina.net/ 2.创建流程图: 2.1 开始创建项目: 2.2 3. 4.

  6. Git源代码管理笔记

    很早之前也学过git但是没有详细的记录,这次是做个复习,巩固 若有不对的地方请您指出 目录 Git和SVN有什么区别? 什么是Git? github仓库 Star和Fork Pull request ...

  7. VsCode中好用的git源代码管理插件GitLens

    1.在插件tab搜索GitLens 2.安装成功后将光标移至代码行即会显示代码编写者 3.在VsCode左侧菜单栏,点击GitLens图标即可查看History,也可以查看全部的日志 4.查看上下pu ...

  8. git@oschina.net源代码管理使用日记

    git的优势: 1 可以创建分支: 2 版本控制是基于每一次提交的,而不需要考虑每次提交了多少个文件. 下载: 下载网址为:http://git-scm.com/download,根据您的操作系统选择 ...

  9. git@oschina.net源代码管理使用日记【转】

    转自:https://www.cnblogs.com/Juvy/p/3556902.html git的优势: 1 可以创建分支: 2 版本控制是基于每一次提交的,而不需要考虑每次提交了多少个文件. 下 ...

随机推荐

  1. 在ArcMap中发布FeatureLayer(要素图层)

    FeatureLayer(要素图层)是ArcGIS Server发布的一种很重要的地图服务,发布后使用提供的url地址就可以在代码中调用并在地图上显示.编辑这个FeatureLayer.在HTML页面 ...

  2. ArcGIS注册数据库问题分析

    本文是'猴妹'师妹授权给我来发表的,介绍都是师妹的研究成果,在此,非常感谢'猴妹'师妹. 用ArcGIS Server在发布地图服务时,注册数据库是很常见的,几年前就开始注册数据库,直到昨天,才有点顿 ...

  3. VIVADO时序约束及STA基础

    一.前言 无论是FPGA应用开发还是数字IC设计,时序约束和静态时序分析(STA)都是十分重要的设计环节.在FPGA设计中,可以在综合后和实现后进行STA来查看设计是否能满足时序上的要求.本文阐述基本 ...

  4. ios11苹果手机怎么投屏到电脑

    使用过苹果手机的用户都知道,苹果手机触摸屏操作极为流畅,网页浏览也非常轻松,各种网络上的应用可以说是非常完美.iPhone的娱乐功能相当的强大,能让苹果iPhone超越了其他手机很大的距离.但是手机怎 ...

  5. 史上最全的springboot导出pdf文件

    最近项目有一个导出报表文件的需求,我脑中闪过第一念头就是导出pdf(产品经理没有硬性规定导出excel还是pdf文件),于是赶紧上网查看相关的资料,直到踩了无数的坑把功能做出来了才知道其实导出exce ...

  6. vue2.0 日历日程表 ,可进行二次开发.

    由于工作业务需求,要写一个日程表,日程表写之前 要先生成日历,废话不多说,直接 上代码: <!DOCTYPE html> <html lang="zh-CN"&g ...

  7. 【STM32H7教程】第2章 STM32H7的开发环境搭建

    完整教程下载地址:http://forum.armfly.com/forum.php?mod=viewthread&tid=86980 第2章    STM32H7的开发环境搭建 本章主要为大 ...

  8. Yii2 解决2006 MySQL server has gone away问题

    Yii2 解决2006 MySQL server has gone away问题 Yii2版本 2.0.15.1 php后台任务经常包含多段sql,如果php脚本执行时间较长,或者sql执行时间较长, ...

  9. Django rest framework源码分析(2)----权限

    目录 Django rest framework(1)----认证 Django rest framework(2)----权限 Django rest framework(3)----节流 Djan ...

  10. 【重学计算机】机组D8章:输入输出系统

    1. 输入输出系统概述 组成:外设.接口.总线.管理软件 基本功能 完成计算机内外的信息传递 保证CPU正确选择输出设备 利用缓冲等,实现主机与外设的速度匹配 特点:异步性.实时性.设备无关性 输入过 ...