当前位置: 首页 > news >正文

【Git版本控制系统】:起步

目录

前言

版本控制

集中式与分布式的区别

Windows安装Git

核心

文件状态

工作区域

基本工作流程

配置用户信息

获取帮助 

在线资源


前言

本篇文件的环境是Windows环境下实现。

在日常工作中git少不了,所以编写本篇文章介绍Git基础,专栏会不定期更新一些Git相关内容,便于日后工作与学习。

虽然git命令很多,但是常用的只有十多个。

版本控制

   版本控制是一种记录一个或若干文件内容变化,以便将来查阅特定版本修订情况的系统。

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

集中式与分布式的区别

集中式(SVN、CSV):

  • 每次在写代码时都需要从服务器中拉取一份下来,并且如果服务器丢失了,那么所有的就都丢失了,你本机客户端仅保存当前的版本信息,换句话说,集中式就是把代码放在一个服务器上集中管理,你的所有回滚等操作都需要服务器的支持;
  • 都有一个主版本号,所有的版本迭代都以这个版本号为主。
来自progit.pdf

分布式(Git):

  • 每个人的电脑都是服务器,当你从主仓库拉取一份代码下来后,你的电脑就是服务器,无需担心主仓库被删或者找不到的情况,你可以自由在本地回滚,提交,当你想把自己的代码提交到主仓库时,只需要合并推送到主仓库就可以了,同时你可以把自己的代码新建一份仓库分享给其它人;
  • git没有固定的版本号,但是有一个由哈希算法算出的id,用来回滚用的;
  • 有一个master仓库,这个仓库是一切分支仓库的主仓库,我们可以推送提交到master并合并到主仓库上,主仓库的版本号会迭代一次,我们客户端上的git版本号无论迭代多少次,都跟master无关,只有合并时,master才会迭代一次。
来自progit.pdf

Windows安装Git

        官方版本可以在 Git 官方网站下载。 打开 Git - Downloading Package,下载会自动开始。 

核心

使用git时的核心特征:

  • 直接记录快照信息
  • 几乎所有操作都在本地执行
  • 保证完整性
  • 一般只添加数据

文件状态

使用git时,文件基本处于以下几个状态:

  • 已修改modified

  • 已暂存staged

  • 已提交committed

来自progit.pdf,文件状态的变化周期

工作区域

使用git时,工作区域基本处于以下几个区域:

  • 工作目录

  • 暂存区

  • Git本地仓库

基本工作流程

1.修改文件 2.暂存文件(add) 3.提交更新(commit) 4.推送至远程仓库(push)

图片来自网络

配置用户信息

        安装完 Git 之后,要做的第一件事就是设置你的用户名邮件地址,每一次提交都会使用这些信息

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

注意:如果使用了 --global 选项,那么该命令只需要运行一次,后续所有操作都会用这些信息。

检查配置信息:

$ git config --list

获取帮助 

        如果想获取git config 命令的手册,执行

$ git help config

        如果不需要全面的手册,可以快速参考,使用-h选项获取简明的帮助

$ git config -h

=========================================================================

在线资源

http://www.git-tower.com/learn

Git官网:https://git-scm.com/

简明指南:https://rogerdudler.github.io/git-guide/index.zh.html

相关文章:

  • Linux之shell变量
  • LeetCode112 路径总和
  • 红帽认证可以直接考rhce嘛?红帽认证有效期多久?
  • Sora没体验资格?开源项目:Open-Sora,复现类Sora视频生成方案
  • Python库Gym:打开机器学习与强化学习的大门
  • JAVA八股day1
  • 学生时期学习资源同步-1 第一学期结业考试题8
  • 关于BFF
  • Echo框架:高性能的Golang Web框架
  • mysql笔记:19. 主从复制和主主复制
  • 由浅到深认识C语言(6):变量的存储类型
  • VS Code安装Live Server插件搭建web网页结合内网穿透实现公网访问
  • 快速高效地数据分析处理:QtiPlot for Mac中文直装版 兼容M
  • 海豚调度系列之:集群部署(Cluster)
  • c语言实现https客户端 源码+详细注释(OpenSSL下载,visual studio编译器环境配置)
  • 《Javascript高级程序设计 (第三版)》第五章 引用类型
  • 【347天】每日项目总结系列085(2018.01.18)
  • 03Go 类型总结
  • 08.Android之View事件问题
  • Angular 响应式表单 基础例子
  • golang 发送GET和POST示例
  • JAVA_NIO系列——Channel和Buffer详解
  • java多线程
  • -- 查询加强-- 使用如何where子句进行筛选,% _ like的使用
  • 关于extract.autodesk.io的一些说明
  • 力扣(LeetCode)357
  • 面试遇到的一些题
  • 设计模式走一遍---观察者模式
  • 写给高年级小学生看的《Bash 指南》
  • 硬币翻转问题,区间操作
  • 做一名精致的JavaScripter 01:JavaScript简介
  • hi-nginx-1.3.4编译安装
  • LevelDB 入门 —— 全面了解 LevelDB 的功能特性
  • 策略 : 一文教你成为人工智能(AI)领域专家
  • ​力扣解法汇总1802. 有界数组中指定下标处的最大值
  • ​虚拟化系列介绍(十)
  • # 透过事物看本质的能力怎么培养?
  • #Linux(帮助手册)
  • (2)(2.10) LTM telemetry
  • (二)构建dubbo分布式平台-平台功能导图
  • (附源码)spring boot火车票售卖系统 毕业设计 211004
  • (附源码)ssm高校运动会管理系统 毕业设计 020419
  • (附源码)ssm学生管理系统 毕业设计 141543
  • (附源码)计算机毕业设计SSM智能化管理的仓库管理
  • (机器学习-深度学习快速入门)第三章机器学习-第二节:机器学习模型之线性回归
  • (机器学习-深度学习快速入门)第一章第一节:Python环境和数据分析
  • (力扣题库)跳跃游戏II(c++)
  • (中等) HDU 4370 0 or 1,建模+Dijkstra。
  • (转)C#开发微信门户及应用(1)--开始使用微信接口
  • (转)使用VMware vSphere标准交换机设置网络连接
  • **PHP二维数组遍历时同时赋值
  • .NET Core WebAPI中使用Log4net 日志级别分类并记录到数据库
  • .NET 简介:跨平台、开源、高性能的开发平台
  • .NET项目中存在多个web.config文件时的加载顺序
  • .Net转Java自学之路—SpringMVC框架篇六(异常处理)