一、 分支管理

使用 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. Android音视频之AudioTrack播放音频(二)

    前一篇讲了如何录制wav音频文件,本篇就来讲讲如何播放wav文件,这里就是使用AudioTrack来播放音频,确切的说是播放pcm格式数据,使用AudioTrack播放也没什么难度,主要就是将数据写入 ...

  2. 信利SC123金融财务计算器评测——不错的HP 12C仿品

    最近X宝48包邮购入信利SC123金融计算器,只是为了玩一玩(没错你的好友盗版狂魔又上线了),因为这是目前市面上能买到的最便宜的金融计算器了,也是能买到的最便宜的RPN计算器,顺手出个评测.这个计算器 ...

  3. select * 和 select 所有字段的区别

    阅读本文大概需要 1 分钟. 之前发过的文章中,关于 select * 和 select 所有字段的知识,有描述不恰当,这次重新纠正下,加深下理解. MySQL 5.1.37 表记录数 41,547, ...

  4. docker安装Oracle 12c

    1.安装阿里的docker源: cat /etc/docker/daemon.json { "registry-mirrors": ["https://pee6w651. ...

  5. .NET Core微服务之基于IdentityServer建立授权与验证服务(续)

    Tip: 此篇已加入.NET Core微服务基础系列文章索引 上一篇我们基于IdentityServer4建立了一个AuthorizationServer,并且继承了QuickStartUI,能够成功 ...

  6. 【Android Studio安装部署系列】三十三、windows系统中通过SourceTree使用git

    版权声明:本文为HaiyuKing原创文章,转载请注明出处! 概述 前期准备 选择代码托管服务器:gitlab.github.开源中国等. 注册账号 创建项目 安装git 参考<[Android ...

  7. Docker中完成Jenkins的安装

    去年就开始学习采用Docker+Jenkins+.Net Core搭建生成式流水线,一直拖到现在,也没有彻底的好好静下来去总结总结.趁着现在对自己的严格要求下,逐渐开始重视自我总结,以此来巩固逐渐失去 ...

  8. Pycharm2018永久破解的办法

    Pycharm2018永久破解的具体步骤: 一.下载pycharm2018专业版 JetBrains官网:https://www.jetbrains.com/pycharm/download/#sec ...

  9. Wolsey“强整数规划模型”经典案例之一单源固定费用网络流问题

    Wolsey“强整数规划模型”经典案例之一单源固定费用网络流问题 阅读本文可以理解什么是“强”整数规划模型. 单源固定费用网络流问题见文献[1]第13.4.1节(p229-231),是"强整 ...

  10. 拓扑排序的 +Leapms 线性规划模型

    知识点 拓扑排序 拓扑排序的+Leapms模型 无圈有向图 一个图G(V,E), 如果边有向且不存在回路,则为无圈有向图.在无圈有向图上可以定义拓扑排序.下图是一个无圈有向图的例子. 拓扑排序 给定一 ...