1、目标

  • 了解Git基本概念
  • 能够概述git工作流程
  • 熟悉Git代码托管服务
  • 能够使用Git常用命令
  • 能够使用idea操作git
  • 了解Git标签
  • 了解SSH协议传输数据

2、概述

2.1 、开发中的实际场景
  • 场景一:备份
小明负责的模块就要完成了,就在即将 Release 之前的一瞬间,电脑突然蓝屏,硬盘光荣牺牲!几
个月来的努力付之东流
  • 场景二:代码还原
这个项目中需要一个很复杂的功能,老王摸索了一个星期终于有眉目了,可是这被改得面目全非的
代码已经回不到从前了。什么地方能买到哆啦 A 梦的时光机啊?
  • 场景三:协同开发
刚和小强先后从文件服务器上下载了同一个文件: Analysis.java 。小刚在 Analysis.java 文件中的第
30 行声明了一个方法,叫 count() ,先保存到了文件服务器上;小强在 Analysis.java 文件中的第 50
行声明了一个方法,叫 sum() ,也随后保存到了文件服务器上,于是, count() 方法就只存在于小刚
的记忆中了
  • 场景四:多版本同步开发不同期上线
老许是一位项目经理,根据产品经理的要求,需要同步开发多个功能,但是会在不同的时间节点上
线,针对同一工程和项目,应该怎么解决这个问题?
  • 场景五:追溯问题代码的编写人和编写时间!
老王是另一位项目经理,每次因为项目进度挨骂之后,他都不知道该扣哪个程序员的工资!就拿这
次来说吧,有个 Bug 调试了 30 多个小时才知道是因为相关属性没有在应用初始化时赋值!可是二
胖、王东、刘流和正经牛都不承认是自己干的!
2.2 、版本控制器的方式

1. 集中式版本控制工具

集中式版本控制工具,版本库是集中存放在一台中央服务器的, team 里每个人 work 时从中央服务
器下载代码,是必须联网才能工作,局域网或互联网。个人修改后然后提交到中央版本库 ( 有一些肯
定是不能提交的,比如 .idea ,每个人的 idea 配置都不一样 ) 。
缺点:如果中央服务器挂了,就不能提交代码
举例: SVN 和 CVS

2. 分布式版本控制工具

分布式版本控制系统没有 “ 中央服务器 ” ,每个人的电脑上都是一个完整的版本库,这样工作的时
候,无需要联网了,因为版本库就在你自己的电脑上。多人协作只需要各自的修改推送给对方,就
能互相看到对方的修改了。
举例: Git
2.3 SVN
SVN 是一个开放源代码的版本控制系统,是 Apache Subversion 的缩写。 SVN 是集中式的管理。 SVN 必须有一
个服务器版本库就放在一个中央服务器,所有开发人员都是与服务器进行交互的。
优点:具有很强的权限控制,细化到每一个用户 ( 读写 ...)
缺点:严重依赖中央服务器

2.4Git

Git 是分布式的 ,Git 不需要有中心服务器,我们每台电脑拥有的东西都是一样的。我们使用 Git 并且有个
中心服务器,仅仅是为了方便交换大家的修改,但是这个服务器的地位和我们每个人的 PC 是一样的。我们可以
把它当做一个开发者的 pc 就可以就是为了大家代码容易交流不关机用的。没有它大家一样可以工作,只不过
“ 交换 ” 修改不方便而已。
git 是一个开源的分布式版本控制系统,可以有效、高速地处理从很小到非常大的项目版本管理。 Git 是
Linus Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件。
同生活中的许多伟大事物一样, Git 诞生于一个极富纷争大举创新的年代。 Linux 内核开源项目有着为数众
多的参与者。 绝大多数的 Linux 内核维护工作都花在了提交补丁和保存归档的繁琐事务上( 1991 - 2002 年
间)。 到 2002 年,整个项目组开始启用一个专有的分布式版本控制系统 BitKeeper 来管理和维护代
码。
到了 2005 年,开发 BitKeeper 的商业公司同 Linux 内核开源社区的合作关系结束,他们收回了
Linux 内核社区免费使用 BitKeeper 的权力。 这就迫使 Linux 开源社区(特别是 Linux 的缔造者
Linus Torvalds )基于使用 BitKeeper 时的经验教训,开发出自己的版本系统。 他们对新的系统制订了
若干目标:
速度
简单的设计
对非线性开发模式的强力支持(允许成千上万个并行开发的分支)
完全分布式
有能力高效管理类似 Linux 内核一样的超大规模项目(速度和数据量)
Clone :克隆,就是将远程仓库复制到本地 , 多用于第一次获取项目
Push :推送,就是将本地仓库代码上传到远程仓库
Pull :拉取,就是将远程仓库代码下载到本地仓库 , Push 之前先 Pull 拉取,更新代码
commit :提交,将工作区代码提交到本地仓库 , Push 之前先提交到本地仓库
2.5 Git 工作流程图

基本概念:

1. 远程仓库 : 在局域网 ( 本地 ) 或互联网上 ( 远程 ) 的一个主机,存放代码库的主机或平台,比如
gitee.com( 码云 )
2. 本地仓库: 在本地主机上的一个代码库,可以独立存在,也可以与远程仓库进行关联
凡是一个文件夹,包含 .git 隐藏文件夹( git 工作目录),说明此文件目录使用 git 版本管理。 .git 文件
目录中存储了很多配置信息、日志信息和文件版本信息、工作区、暂存区信息等。 .git 文件夹中有
很多文件,其中有一个 index 文件就是暂存区,也可以叫做 stage 。暂存区是一个临时保存修改文件
的地方

3. 工作区:对任何文件的修订 ( 增删改 ) ,都先放在工作区,工作区不与任何仓库分支进行关联
4. 暂存区:把修订的文件,从工作区经过 add (添加)后与某一个仓库分支进行关联,只要进入缓存
区的文件才能 commit( 提交 ) 到本地仓库。
5. 分支:代码存放在仓库,默认是主分支 (master) ,可以在主分支基础上创建很多子分支,比如
develop (开发)、 bugfix ( bug 修复)等。
Git基本命令
1 . clone (克隆) : 从远程仓库中克隆代码到本地仓库
fetch ( 抓取 ) : 从远程库,抓取到本地仓库,不进行任何的合并动作,一般操作比较少。
2 . checkout (检出) : 从本地仓库中检出一个仓库分支然后进行修订
3 . add (添加) : 在提交前先将代码提交到暂存区
4 . commit (提交) : 提交到本地仓库。本地仓库中保存修改的各个历史版本
5 . pull ( 拉取 ) : 从远程库拉到本地库,自动进行合并 (merge) ,然后放到到工作区,相当于
fetch+merge
6 . push (推送) : 修改完成后,需要和团队成员共享代码时,将代码推送到远程仓库
2.6 、工作目录下的状态
Git 工作目录下的文件存在两种状态:
untracked 未跟踪(未被纳入版本控制)
tracked 已跟踪(被纳入版本控制)
Unmodified 未修改状态
Modified 已修改状态 ( 已经在提交在本地仓库但是进行了修改 )
Staged 已暂存状态
这些文件的状态会随着我们执行 Git 的命令而发生变化

3Git远程仓库

3.1 、 常用的托管服务 [ 远程仓库 ]
前面我们已经知道了 Git 中存在两种类型的仓库,即本地仓库和远程仓库。那么我们如何搭建 Git 远
程仓库呢?我们可以借助互联网上提供的一些代码托管服务来实现,其中比较常用的有 GitHub 、码
云、 GitLab 等。
gitHub (
地址: https://github.com/ )是一个面向开源及私有软件项目的托管平台,因为只
支持 Git 作为唯一的版本库格式进行托管,故名 gitHub
码云(地址: https://gitee.com/ )是国内的一个代码托管平台,由于服务器在国内,所以相
比于 GitHub ,码云速度会更快
GitLab (地址: https://about.gitlab.com/ )是一个用于仓库管理系统的开源项目,使用 Git
作为代码管理工具,并在此基础上搭建起来的 web 服务 , 一般用于在企业、学校等内部网络搭
git 私服
3.2 、 注册码云
要想使用码云的相关服务,需要注册账号(地址: https://gitee.com/signup )

Git分布式版本控制工具(Git命令基本操作)相关推荐

  1. Git分布式版本控制工具

    Git分布式版本控制工具 文章目录 Git分布式版本控制工具 1 目标 2 概述 2.1 开发中的实际场景 2.2 版本控制器的方式 2.3 SVN 2.4 Git 2.5 Git工作流程图 3 Gi ...

  2. 分布式版本控制工具Git的安装

    git分布式版本控制工具 本地仓库,远程仓库(github,gitee) 下载地址:https://git-scm.com/ 速度超级慢-23k/s 换成Git下载国内镜像地址 https://npm ...

  3. Linux | 分布式版本控制工具Git【版本管理 + 远程仓库克隆】

    文章目录 一.前言 二.有关git的相关历史介绍 三.Git版本管理 1.感性理解 -- 大学生实验报告 2.程序员与产品经理 3.张三的CEO之路 -- 版本管理工具的诞生 四.如何在Linux上使 ...

  4. Git分布式版本控制工具【IDEA版】【安装和使用以及上传代码到Gitee】(一篇文章精通系列)

    一.目标 了解Git基本概念 能够概述git工作流程 能够使用Git常用命令 熟悉Git代码托管服务 能够使用idea操作git 二.Git概述 1.开发中的实际场景 场景一:备份 小明负责的模块就要 ...

  5. 分布式版本控制工具----git

    分布式版本控制工具 版本控制 版本控制的功能 版本控制分类 git简介 git优势 git安装 git结构 代码托管中心 代码托管模式 git操作 git 分支(45minutes) 分支操作 git ...

  6. Git 分布式版本控制工具01:Git介绍+下载+安装

    1. 前言 1.1 什么是Git Git 是一个分布式版本控制工具,通过Git 仓库来存储和管理源代码文件文件. 在IDEA开发工具中可以集成Git: 集成后在IDEA中可以看到Git相关图标: 可以 ...

  7. 分布式版本控制工具Git

    一.Git技术简介 Git是一个分布式版本控制系统,与集中式的SVN不同. 1. 主要特点 集中式特点: 所有人的资源全部保存在中央服务器. 所有人开发前都需要从中央服务器上下载同步其他人的代码才能继 ...

  8. 分布式版本控制工具 Git

    http://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000 转载于:https://www.c ...

  9. 【尚硅谷Java笔记+踩坑】Git(分布式版本控制工具)

    用于复习快速回顾 目录 1.Git 1.0.提交项目到GitHub简洁版 1.2.版本控制 1.3.版本控制工具 1.4.Git简史 1.5.Git工作机制 1.6.Git和代码托管中心 2.Git安 ...

最新文章

  1. 这篇博士毕业论文致谢句句诛心......
  2. mkdir函数linux,linux--access函数与mkdir函数
  3. apache重定向无效
  4. html 距离上边缘,HTML - CSS边缘恐怖; 边距在父元素之外添加空格
  5. 基于Android的红外测温设计,基于Android的红外三维重构移动APP设计与实现
  6. 圆桌对话:数字化升级,视频通信云赋能全行业
  7. 漫画:程序员相亲?哈哈哈哈哈哈
  8. IE8 select 动态下拉遇到的问题
  9. go语言web开发 排坑指南
  10. 云图说丨“真人?机器?傻傻分不清!” WAF Bot管理,带你慧眼辨“精”!
  11. hdu5618 (三维偏序,cdq分治)
  12. 重读TCP/IP(2)之链路层
  13. Python(六):dict、set
  14. otf字体转ttf字体
  15. amazeUI的icon图标库
  16. 设计模式基础-UML类图 (转自https://www.jianshu.com/p/0cd7df8a7789)
  17. 【论文翻译】Mastering the game of Go without human knowledge (无师自通---在不借助人类知识的情况下学会围棋)
  18. mac 不显示 外接屏幕_苹果电脑外接显示器显示不出来 - 卡饭网
  19. 知识点滴 - 多重验证MFA
  20. gnss、gps、imu、rtk、ins区分及含义

热门文章

  1. 寻找旋转数组的最小值
  2. 实操:Zabbix添加mysql监控模板配置
  3. 微博超话自动签到 php,求一个可以长期签到新浪微博超话和QQ音乐签到
  4. JDK1.5新特性、单例设计模式
  5. CC2530驱动_DHT11
  6. 干货 | 基于 Python 的信用评分模型实战!
  7. mysql死锁语句_Mysql死锁
  8. 中国人的成功十要(台湾成功学大师:曾仕强)
  9. dig的现在分词_dig是什么意思_dig在线翻译_英语_读音_用法_例句_海词词典
  10. 散养土鸡野外天敌的防护