Git与GitFlow工具介绍

关于版本控制

什么是“版本控制”?我为什么要关心它呢? 版本控制是一种记录一个或若干文件内容变化,以便将来查阅特定版本修订情况的系统。 不单单可以对保存着软件源代码的文件作版本控制,你可以对任何类型的文件进行版本控制。

有了它你就可以将某个文件回溯到之前的状态,甚至将整个项目都回退到过去某个时间点的状态,你可以比较文件的变化细节,查出最后是谁修改了哪个地方,从而找出导致怪异问题出现的原因,又是谁在何时报告了某个功能缺陷等等。 使用版本控制系统通常还意味着,就算你乱来一气把整个项目中的文件改的改删的删,你也照样可以轻松恢复到原先的样子。 但额外增加的工作量却微乎其微。

1. Git

1.1 Git基础

1.1.1 Git对待数据的方法——直接记录快照,而非差异比较

优点体现在Git分支操作上

1.1.2 Git保证完整性

Git 中所有数据在存储前都计算哈希校验和,然后以校验和来引用。若你在传送过程中丢失信息或损坏文件,Git 就能发现。

实际上,Git 数据库中保存的信息都是以文件内容的哈希值来索引,而不是文件名。SHA-1 哈希看起来是这样:

24b9da6552252987aa493b52f8696cd6d3b00373——版本的唯一标识,版本回退时就要用到这个标识符。

1.1.3 三个工作区域、Git文件三种状态、基本工作流程

  • 工作目录、暂存区域以及Git 仓库(本地/远程)。

  • 已修改(modified)、已暂存(staged)和已提交(committed)。

    已修改表示修改了文件,但还没保存到数据库中。 已暂存表示对一个已修改文件的当前版本做了标记,使之包含在下次提交的快照中。已提交表示数据已经安全的保存在本地数据库中。

  • 基本操作流程
    1. 工作目录修改文件。
    2. 暂存文件,将文件的快照放入暂存区域
    3. 提交更新,找到暂存区域的文件,将快照永久性存储到Git仓库目录

1.2 Git环境配置

在系统上刚安装完Git后,需要要做几件事来定制你的 Git 环境。 每台计算机上只需要配置一次,程序升级时会保留配置信息。 你可以在任何时候再次通过运行命令来修改它们。

Git 自带一个 git config 的工具来帮助设置控制 Git 外观和行为的配置变量。 这些变量存储在三个不同的位置:

  1. /etc/gitconfig 文件: 包含系统上每一个用户及他们仓库的通用配置。 使用 --system 选项的 git config 时,它会从此文件读写配置变量。
  2. ~/.gitconfig 或 ~/.config/git/config 文件:只针对当前用户。 使用--global 选项让 Git 读写此文件。
  3. 当前使用仓库的 Git 目录中的 config 文件(就是 .git/config):针对该仓库,使用--local

配置文件覆盖(overload)关系:当前仓库.git/config 覆盖 ~/.gitconfig 或 ~/.config/git/config 覆盖 /etc/gitconfig

:只覆盖同名变量

1.2.1 最基本配置

当安装完 Git 应该做的第一件事就是设置你的用户名称与邮件地址。 这样做很重要,因为每一个 Git 的提交都会使用这些信息,并且它会写入到你的每一次提交中:

$ git config --global user.name "John Doe"
$ git config --global user.email johndoe@example.com

1.2.2 其他配置(提高工作效率、非必须)

.gitconfig文件截图示例

.gitignore文件截图示例 一个各种语言的gitignore列表

顺便一提:home目录下(其他位置也有)有许多的 .xxx开头的隐藏文件和文件夹(需勾选show hiden files),这些文件是各种环境的配置文件,统称为dotfiles,对于一些常用的自己量身定制的配置文件(如.bashrc, .vim, .emacs, .gitconfig, .gitignore …)( 每台计算机上只需要配置一次),技术人员会将这些文件保存到云端(github上一堆),方便换到其他电脑时直接下载使用。好东西值得拥有!!好东西值得拥有!!好东西值得拥有!!(打算弄个,暂时没有)

1.3 基本指令

基本指令大全:已按照功能将指令分块,便于忘记指令时按照需求快速查找定位。点进去啊,这个挺有意思的,可以当document使用~~

1.3.1 文件的状态变化周期–git status

请记住,你工作目录下的每一个文件都不外乎这两种状态:已跟踪或未跟踪。已跟踪的文件是指那些被纳入了版本控制的文件。

与1.1节不矛盾,上面指git管理下的文件状态,这里指工作空间下的所有文件的状态。

1.3.2 最最基本指令

指令只讲用途,不讲具体操作,具体操作靠自己上手。

- init 在当前工作目录初始化git版本管理器(产生.git隐藏文件夹)

- clone 克隆远程仓库到当前工作目录(clone的方式会自带一个.git隐藏文件夹,下载.zip不会有,所以建议用clone的方式下载各种源码,方便远程同步更新和各个版本切换 )

- add 添加到暂存区

- commit 提交到仓库

- log 查看提交日志

- branch 查看所有分支

- reset 版本回退/撤销修改

- checkout 分支切换/撤销修改

- merge 分支合并

- push 把本地仓库推送到远程仓库

- fetch 把远程仓库拉回本地仓库

- pull 把远程仓库拉到工作区 fetch+merge

1. HEAD 始终指向<<当前所处>>分支的最新的提交点。所处分支变了或产生了新的提交点,HEAD会变. 将 HEAD 想象为当前分支的别名

2. Working directory,它是你的工作目录,也是当前你看到的东西。你的工作目录是与版本、分支相关的。

3. Stage 虽然看不见,但是执行git status就会看到哪些对象的修改将在下一次commit的时候被放进本地仓库。

1.3.3 功能强大的指令

  • diff 比较文件差异、改动 有更方便的difftool工具查看改动
  • stash
  • reflog HEAD改动历史记录
  • rebase 变基
  • …(我不知道的指令。。。)

1.4 Git使用规范

1. fork 将别人的仓库复制到自己的git上。

2. clone 到本地仓库。

3. 新建分支,修改提交A

4. 修改提交B

5. 远程master有更新C

6. rebase操作

7. push到自己的远程仓库

8. 申请提交pull request

2 Git Flow

2.1 用途

大型团队项目中高效快速管理分支(初始化/新建/结束 分支)

2.2 图示

2.3 七条指令

先看参考链接2,然后结合上图,7条指令干了什么一目了然。

- git flow init

- git flow feature start xxx

- git flow feature finish xxx

- git flow release start 0.1.xx

- git flow release finish 0.1.xx

- git flow hotfix start xxx

- git flow hotfix finish xxx

3 UI界面

知道了基本命令的用途后,可以结合git相关的UI界面来快速上手,如git gui和gitk。

ubuntu可以用非商用免费版的SmartGit,同样支持git-flow。



参考:

1. git教程

2. A successful Git branching model-Git Flow

3. Using git-flow to automate your git branching workflow

时间: 2024-10-17 00:21:07

Git与GitFlow工具介绍的相关文章

Git之GitFlow工作流

一. GitFlow 介绍 1.1 什么是 GitFlow GitFlow 是一种 Git 工作流,它是团队成员遵守的一种代码管理方案 . 1.2 GitFlow 常用分支说明 分支名称 分支说明 Production 生产分支,即 Master分支.只能从其他分支合并,不能直接修改 Release 发布分支,基于 Develop 分支创建,待发布完成后合并到 Develop 和 Production 分支去 Develop 主开发分支,包含所有要发布到下一个 Release 的代码,该分支主要

0516.32款iOS开发插件和工具介绍[效率]

插件和工具介绍内容均收集于网络,太多了就不一一注明了,在此谢过! 1.Charles 为了调试与服务器端的网络通讯协议,常常需要截取网络封包来分析.Charles通过将自己设置成系统的网络访问代理服务器,使得所有的网络访问请求都通过它来完成,从而实现了网络封包的截取和分析.一个可查看所有HTTP和SSL/HTTPS流量的工具.这款工具对于你测试和服务器端进行交互的应用非常有用 2.xScope xScope带有六种不同的工具,帮助每一个设计者快速.精确的完成工作,这些工具功能灵活.强大,包括∶量

Git团队协作工具

-- 故国神游,多情应笑我,早生华发. Git是什么? Git是一个版本控制工具,代码管理工具,团队协作工具.它跟SVN等传统工具实现同样的目的:但从某种程度来说,它更快,更灵活.我想绝大多数读者都已经在接触这个工具了,并且用于日常的项目中去了.我的这篇文章,不是作为一个Git入门教程,也不是作为一本大块头的教科书.(说到教科书,我推荐下面的这本.这本书确实好,很全面.我的这篇文章,其实就是这本书的读书笔记而已.) Pro Git -- http://git.oschina.net/progit

32款iOS开发插件和工具介绍[效率]

插件和工具介绍内容均收集于网络,太多了就不一一注明了,在此谢过! ? 1.Charles 为了调试与server端的网络通讯协议.经常须要截取网络封包来分析. Charles通过将自己设置成系统的网络訪问代理server,使得全部的网络訪问请求都通过它来完毕,从而实现了网络封包的截取和分析. 一个可查看全部HTTP和SSL/HTTPS流量的工具.这款工具对于你測试和server端进行交互的应用非常实用 ? 2.xScope xScope带有六种不同的工具,帮助每个设计者高速.精确的完毕工作.这些

第3章 Android移植平台工具介绍

第3章 通过本章对开发板移植平台工具介绍,如FS_S5PC100拥有丰富的硬件资源网络接口.音频的输入输出.Video输出.串口.红外接口.温度传感器.HDMI接口.VGA接口等.知道了开发板一些基本硬件组成,同时开发板FS_S5PC100软件资源有Android2.1系统源代码.Linux2.6.29 系统源代码.外设接口测试源代码和U-Boot(支持USB.网络通信).接下来说明FS_S5PC100开发平台的Android摄像头功能展示.VGA 720p高清播放功能和HDMI 720P显示功

pstree,ps,top,htop,vmastp,pmap,glances,dstat进程管理工具介绍

htop,glances,dstat进程管理工具介绍 1.htop 工具 htop常用交互命令 M:以memory排序 P:以cpu占用比排序 T:以cpu占用时长排序 u:过滤仅显示选定用户的进程: s:跟踪选定的进程所发起的系统调用: l:显示指定进程打开的文件 t:显示进程树格式 a:将选定的进程绑定在指定的CPU上 2.glances: glances[-bdehmnrsvyz1] [-B bind] [-c server] [-C conffile] [-p port] [-P pas

网站HTML,XHTML,XML,WML,CSS等测试验证工具介绍[转]

网站HTML,XHTML,XML,WML,CSS等语言测试验证工具介绍 1 在线网站语言测试检查网站: HTML和XHTML测试检查网站: http://validator.w3.org/ 或http://www.htmlhelp.com/tools/validator/ CSS测试检查网站:http://jigsaw.w3.org/css-validator/ RSS Feed测试检查网站: http://validator.w3.org/feed/或http://www.feedvalida

Android SDK目录结构和工具介绍

Android SDK目录结构和工具介绍是本文要介绍的内容,主要是来了解并学习Android SDK的内容,具体关于Android SDK内容的详解来看本文. AD: Android SDK目录结构和工具介绍是本文要介绍的内容,主要是来了解并学习Android SDK的内容,具体关于Android SDK内容的详解来看本文. Android SDK目录下有很多文件夹,主要都是干什么的呢? 1.add-ons这里面保存着附加库,比如GoogleMaps,当然你如果安装了OphoneSDK,这里也会

《连载 | 物联网框架ServerSuperIO教程》- 14.配制工具介绍,以及设备驱动、视图驱动、服务实例的挂载

注:ServerSuperIO二次开发套件授权码申请---截止到:2016-12-09 1.C#跨平台物联网通讯框架ServerSuperIO(SSIO)介绍 <连载 | 物联网框架ServerSuperIO教程>1.4种通讯模式机制. <连载 | 物联网框架ServerSuperIO教程>2.服务实例的配置参数说明 <连载 | 物联网框架ServerSuperIO教程>- 3.设备驱动介绍 <连载 | 物联网框架ServerSuperIO教程>-4.如开发