碎碎念: 虽然说每次创建github仓库再push就几句命令,但是总是忘,于是整理了一下,理解记忆每条命令的含义,和清晰化流程很重要!!!!但最重要的就是我们为什么要学, 为什么要用, 这样在我们自己工作或学习中诞生类似问题/需求时, 就可以借助该方法解决. 下文借鉴黑马程序员-git讲义内容, 如果需要详细版, 可以私我

Unix的哲学是“没有消息就是好消息”

一. 关于版本控制

1. 发现问题

想必写过毕业论文或申报书的同学们深有感触: 版本1.0, 版本X.0, 最终版, 打死都不改版, 提交版… 这里隐含了不少的问题:

  1. 操作麻烦: 每次都需要复制 - 粘贴 - 重命名
  2. 命名不规范:: 无法通过文件名知道具体做了哪些修改
  3. 容易丢失: 如果硬盘故障或不小心删除等
  4. 协作困难: 需要手动合并每个人对项目文件的修改, 合并时极易出错

2. 版本控制系统

所以为了解决上述问题, 人们制造了 版本控制软件/版本控制系统 来记录文件变化, 将手工管理文件版本的方式, 改为由软件管理文件的版本.

3. 使用版本控制软件的优点

  1. 操作简便: 只需要记几组简单的终端命令即可上手
  2. 易于对比: 基于版本控制软件提供的功能, 能够方便比较文件的细节变化, 从而查找出导致问题的原因
  3. 易于回溯: 可以将选定文件回溯到之前的状态, 甚至整个项目都退回到过去某个时间点的状态
  4. 不易丢失: 可以轻松恢复误删文件, 在远程服务器有备份
  5. 协作方便, 基于版本控制软件提供的分支功能, 可以实现多人协作开发的代码合并操作

4. 版本控制系统的分类

如图所示, 分为三类: 本地版本控制系统, 集中式版本控制系统, 分布式版本控制系统

分布式版本控制系统特点:

  1. 基于服务器 + 客户端的运行模式
  2. 客户端是服务器的完整备份, 并不像集中式那样只保留文件的最新版本.
  3. 其优点在于: 即使客户端断网也支持离线本地提交的版本更新, 服务器故障/损坏, 可以使用任一客户端的备份进行恢复.
  4. 典型代表 Git!!!, 目前最先进, 最流行的开源的分布式版本控制系统.
  5. 项目越大越复杂, 协同开发者越多, 越能体现出Git的高性能和高可用性

二. Git基础概念

1. Git的特性

Git之所以快速和高效, 主要依赖以下2个特性:

  1. 直接记录快照(类似于备份), 而非比较差异(传统版本控控制系统是基于差异的版本控制)
    所以Git快照 是利用空间换时间, 但因为每个版本都是完整的文件快照, 所以版本切换非常快
    为了效率, 如果文件没有修改, git就不再重新存储该文件, 只保留一个链接指向之前存储的文件
  2. 近乎所有的操作都是本地执行的, Git绝大多数操作都只需要访问本地文件和资源
    断网后依旧可以在本地对项目进行版本控制, 联网后, 把本地修改你的记录同步到云端服务器即可

2. Git中的三个区域(都在本地)


  • 工作区( Working directory): 说白了就是你的项目文件夹, 将项目文件夹在编辑器打开, 进行修改代码操作不就是在工作嘛
  • 暂存区(staging area): 一个看不见的区域, 实际上是.git版本库里存放的最重要的东西, index文件
  • Git本地版本库 (repository): 当你在终端执行git init后, 会在当前文件夹生成.git隐藏目录, 同时自动创建了唯一一个master分支,所以, git commit就是往master分支上提交更改

3. Git 中的三种状态

  • 工作区的文件被修改了,但还没有放到暂存区,就是已修改状态
  • 如果文件已修改并放入暂存区,就属于已暂存状态, git add命令后的状态
  • 如果 Git 仓库中保存着特定版本的文件,就属于已提交状态, git commit命令后的状态


    注意: git status可以查看文件处于什么状态, -s(short)表示精简/摘要查看
  • Untracked files 红色: 未跟踪, 需要使用git add
  • modified 红色: 已修改,可以使用"git add" and/or "git commit -a"添加到暂存区或直接同步到仓库
  • modified 绿色: 新添加到暂存区中的文件前面有绿色的 A 标记, 可以使用git commit 同步到仓库
  • On branch master: 说明工作区所有文件都处于"未修改"状态, 没有任何文件需要被提交
  • 修改过的、没有放入暂存区的文件前面有红色的 M 标记
  • 修改过的、放入暂存区的, 但还没有提交的文件前面有绿色的 M 标记

三. 安装并配置Git

1. 安装git

git官网下载地址
安装完Git第一件事就是设置自己的用户名和密码, 用于Git版本控制管理时, 记录是谁对项目进行了操作
如果使用 --global 则只需运行一次, 即可永久生效, 因为被写入.gitconfig全局配置文件中了.

   1. 从Git官网直接下载安装程序,然后按默认选项安装2. $ git config --global user.name "Your Name"   第一次需要配置好全局选项3. $ git config --global user.email "email@example.com"

2. 创建版本库

版本库又名仓库,英文名repository,你可以简单理解成一个目录,这个目录里面的所有文件都可以被Git管理起来,每个文件的修改、删除,Git都能跟踪,以便任何时刻都可以追踪历史,或者在将来某个时刻可以“还原”。
关键:Git命令必须在Git仓库目录内执行, 创建版本库可以自建, 也可以从其它服务器比如github克隆

   1. mkdir 仓库地址/路径2. cd 仓库地址/路径3. git init   初始化仓库, 创建本地版本库/本地仓库ls -ah 可查看当前路径生成.git目录,千万不要手动修改,会破坏仓库4. git add . 将当前路径所有文件放到暂存区, 相当于通知git管理/追踪这些文件5. git commit -m '把本次提交说明' 同步数据到仓库, 有意义的说明可以方便从历史找到更改记录commit可以一次提交很多文件,所以可以多次add不同的文件

3. 常用Git命令

 1. git checkout XX :撤销对文件的修改, 所有修改丢失且无法恢复,请谨慎操作!!! 本质就是用版本库文件覆盖工作区文件2. git add .  :一次性将新增和修改后的文件放入暂存区, 经常使用3. git reset HEAD XX  :从暂存区移除指定文件4. git commit -a -m :暂存区略显繁琐, 加上-a 将Git工作流程简化到工作区 -> Git仓库跳过add5. git rm -f XX :从Git仓库和工作区同时移除对应文件6. git rm --cached XX :只从仓库移除指定文件, 但保留工作区7. git log --pretty=oneline :回顾项目的提交历史, 在一行上显示, 便于看到所有历史8. git reset --hard <commitID>  :回退到指定的版本

4. 添加远程库

注意: 如果只是个人项目, 也不需要备份到服务器, 这一步也不是那么有必要
已经在本地创建了一个Git仓库后,又在GitHub创建一个Git仓库,并且让这两个仓库进行远程同步。这样,GitHub上的仓库既可以作为备份,又可以让其他人通过该仓库来协作,真是一举多得。

   1. 登录github,“Create a new repo”2. $ git remote add origin git@github.com:HRzzcl/heimamm.git  关联远程库 默认origin为远程库名字3. $ git push -u origin master 把本地库的所有内容推送到远程库

5. 关于分支的操作

    # 查看所有文件,多出 .git 文件ls -al# 新建后对项目进行介绍touch README.md# 新建后可以写入后续不想提交到GitHub上的文件touch .gitignore# 列出所有本地分支和远程分支,仓库默认在 master 分支git branch -a# 新建并切换到 gh-pages 分支git checkout -b gh-pages# 删除 master 分支git branch -d master# 添加当前目录的所有文件到暂存区git add .# 提交暂存区到仓库区,并添加代码提交信息git commit -m 'first commit'

6. 忽略文件

一般我们总会有些文件无需纳入 Git 的管理,也不希望它们总出现在未跟踪文件列表。 在这种情况下,我们可以创建一个名为 .gitignore 的配置文件,列出要忽略的文件的匹配模式
所谓的 glob 模式是指简化了的正则表达式:
① 星号 * 匹配零个或多个任意字符
② [abc] 匹配任何一个列在方括号中的字符 (此案例匹配一个 a 或匹配一个 b 或匹配一个 c)
③ 问号 ? 只匹配一个任意字符
④ 在方括号中使用短划线分隔两个字符, 表示所有在这两个字符范围内的都可以匹配(比如 [0-9] 表示匹配所有 0 到 9 的数字)
⑤ 两个星号 ** 表示匹配任意中间目录(比如 a/**/z 可以匹配 a/z 、 a/b/z 或 a/b/c/z 等)

【22/03】为什么要学git分布式版本控制软件及基本操作相关推荐

  1. Git分布式版本控制系统(上)

    Git分布式版本控制系统(上) 链接:https://pan.baidu.com/s/1CgaEv12cwfbs5RxcNpxdAg 提取码:fytm 复制这段内容后打开百度网盘手机App,操作更方便 ...

  2. Git分布式版本控制系统

    Git分布式版本控制系统 git remote -v 查看仓库 一 企业高效持续集成平台场景介绍: 二,GIT分布式版本控制系统: 2.1 Git简介: 2.1.1 git是什么? Git在Wikip ...

  3. Git 分布式版本控制系统

    目录 文章目录 目录 Git 分布式版本控制系统 Git 的基本概念 Git 的仓库结构 Git 的核心对象 Git 的数据结构 Git Flow 参考文档 Git 分布式版本控制系统 Git 是一个 ...

  4. g4e基础篇#2 Git分布式版本控制系统的优势

    1. 基础篇: 为什么要使用版本控制系统 Git 分布式版本控制系统的优势 Git 安装和设置 初始化Git存储库(Repo) 起步 1 – 创建分支和保存代码 起步 2 – 了解Git历史记录 起步 ...

  5. git分布式版本管理系统和github平台

    一.git分布式版本管理系统(以下是我自己的见解,可能不对,希望指出) 1.git是一个概念,github是一个基于git概念所创造的平台 它可以让一个项目文档,在不同地点不同时间让不同的人同时开发和 ...

  6. Git分布式版本工具的部署与使用

    一.Git概述 1. Git诞生 很多人都知道,Linus在1991年创建了开源的Linux,从此,Linux系统不断发展,已经成为最大的服务器系统软件了. Linus虽然创建了Linux,但Linu ...

  7. Git分布式版本控制系统(下)

    Git分布式版本控制系统(下) 链接:https://pan.baidu.com/s/1CgaEv12cwfbs5RxcNpxdAg 提取码:fytm 复制这段内容后打开百度网盘手机App,操作更方便 ...

  8. Git 分布式版本控制系统使用教程

    Git 专栏索引: Git 分布式版本控制系统使用教程 在 IDEA 中使用 Git 图文教程 Git 分布式版本操作系统使用教程 1. 版本控制系统简介 1.1 集中式版本控制系统 1.2 分布式版 ...

  9. Git分布式版本控制系统简介和使用

    Git是一款免费.开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目.[1] Git的读音为/gɪt/. Git是一个开源的分布式版本控制系统,可以有效.高速的处理从很小到非常大的项目版本 ...

最新文章

  1. Google Mock(Gmock)简单使用和源码分析——简单使用
  2. LinkedList 源码分析
  3. 阿里数据中台系列之Apsara Stack控制台初始化配置及资源管理(二)
  4. linux 外部协议请求,ARM架构和总线协议如何支持Linux原子操作?
  5. “会”和 好”纯粹是两个概念
  6. 不要在foreach循环里进行元素的remove/add操作。remove元素请使用iteratot方式,如果并发操作,需要对Iterator对象加锁
  7. 【干货】单日10亿GMV的.NET5电商平台,是如何设计的?
  8. java安装后在哪里打开_冷却塔声屏障安装后降噪效果不理想,原因出在哪里?...
  9. Cocos2dx坐标转换
  10. Visual Studio Code 10 月 Java 扩展更新
  11. python往list中添加tuple
  12. python网格搜索优化参数_python - pyspark:在网格搜索为空后获得最佳模型的参数{} - 堆栈内存溢出...
  13. c#利用反射+特性实现简单的实体映射数据库操作类(表与类的映射)
  14. Mac系统必备强大软件合集
  15. 微信公众号网页登录开发测试步骤详解
  16. linux mint卸载桌面环境,在Linux Mint 19/Ubuntu 18.04系统上安装Deepin桌面环境的方法
  17. 武汉江夏区计算机学院,信工班级风采展⑦ 计算机类1902班
  18. JAVA集合和字符串互转
  19. dos下用move命令移动文件夹
  20. 小米10获取root权限_小米手机怎么才能完美ROOT-开发版稳定版通用

热门文章

  1. 基于计算机视觉的UC小游戏外挂
  2. RabbitMQ本地部署(Centos 7.4)
  3. SpringCloud Gateway 身份认证
  4. 2.STM32F427llHX(大疆A板) 点亮小灯(库函数版本)
  5. 正在连接箐英服2服务器,《魔兽世界》低人口服务器连接现有服 2至3个月完成辅助...
  6. Python--Matplotlib简单了解
  7. wwe拳王争霸赛搞笑报名表源码
  8. 初识Linux Mint
  9. win8硬盘安装(win8硬盘格式)
  10. 运用计算机技术和语文教学,计算机技术在语文教学中的运用.docx