一、 分支管理

使用 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. Django Admin管理入门

    Django最强大的部分之一是自动管理界面.它从模型中读取元数据,以提供快速,以模型为中心的界面,受信任的用户可以在其中管理您网站上的内容.管理员的推荐用途仅限于组织的内部管理工具.它不是用于构建整个 ...

  2. 将博客搬至CSDN https://blog.csdn.net/Fredric_2014

    将博客搬至CSDN https://blog.csdn.net/Fredric_2014

  3. Java Main参数解析(Args4j)

    最近实现一个工具,Main函数会有很多参数,而且参数类型不同,为了统一解析,网上找到三方工具类Args4j,轻松搞定. 代码实例如下: 定义解析类: import java.io.File impor ...

  4. Activity 之使用

    Activity 之使用 本文内容 1. 使用 Activity 显式简单界面 2. Activity 之间的跳转 2.1 startActivity 2.3 startActivityForResu ...

  5. 一个比Spring Boot快44倍的Java框架!

    最近栈长看到一个框架,官方号称可以比 Spring Boot 快 44 倍,居然这么牛逼,有这么神奇吗?今天带大家来认识一下. 这个框架名叫:light-4j. 官网简介:A fast, lightw ...

  6. 读Cassandra源码之并发

    java 并发与线程池 java并发包使用Executor框架来进行线程的管理,Executor将任务的提交与执行过程分开,直接使用Runnable表示任务.future获取返回值.ExecutorS ...

  7. 【Caffe篇】--Caffe solver层从初始到应用

    一.前述 solve主要是定义求解过程,超参数的 二.具体 #往往loss function是非凸的,没有解析解,我们需要通过优化方法来求解. #caffe提供了六种优化算法来求解最优参数,在solv ...

  8. TabLayoutBottomDemo【TabLayout实现底部选项卡】

    版权声明:本文为HaiyuKing原创文章,转载请注明出处! 前言 使用TabLayout实现底部选项卡切换功能. 效果图 代码分析 1.演示固定模式的展现 2.演示自定义布局的实现 使用步骤 一.项 ...

  9. Python获取网络中的存活主机以及哪些主机是Linux

    这个脚本用于扫描网络中的存活主机,通常在CMDB中自动获取主机的时候用到. #!/usr/bin/env python # -*- coding: utf-8 -*- ""&quo ...

  10. Asp.Net Core 轻松学-在.Net Core 使用缓存和配置依赖策略

    前言     几乎在所有的应用程序中,缓存都是一个永恒的话题,恰当的使用缓存可以有效提高应用程序的性能:在某些业务场景下,使用缓存依赖会有很好的体验:在 Asp.Net Core 中,支持了多种缓存组 ...