Git 简介

Git简介

(118条消息) ❤️Git图文使用教程详解(一)_生命是有光的的博客-CSDN博客

  • Git是一个免费的、开源的分布式版本控制系统 ,可以快速高效地处理从小型到大型的各种项目
  • Git易于学习,占地面积小,性能 极快 。 它具有廉价的本地 库 ,方便的暂存区域和多个工作
    流分支等特性。 其性能优于 Subversion、 CVS、 Perforce和 ClearCase等 版本控制工具。

版本控制

  • 版本控制是一种记录文件内容变化,以便将来查阅特定版本修订情况的系统。
  • 版本控制其实最重要的是可以记录文件修改历史记录,从而让用户能够查看历史版本,方便版本切换

1. 集中式版本控制工具

  • CVS、SVN、VSS
  • 集中化的版本控制系统诸如 CVS、SVN 等,都有一个单一的集中管理的服务器,保存所有文件的修订版本,而协同工作的人们都通过客户端连到这台服务器,取出最新的文件或者提交更新。多年以来,这已成为版本控制系统的标准做法。
  • 这种做法带来了许多好处,每个人都可以在一定程度上看到项目中的其他人正在做些什么。而管理员也可以轻松掌控每个开发者的权限,并且管理一个集中化的版本控制系统,要远比在各个客户端上维护本地数据库来得轻松容易。
  • 事分两面,有好有坏。这么做显而易见的缺点是中央服务器的单点故障。如果服务器宕机一小时,那么在这一小时内,谁都无法提交更新,也就无法协同工作。

2.分布式版本控制工具

  • Git、Mercurial、…

  • 像Git这种分布式版本控制工具 ,客户端提取的不是最新版本的文件快照,而是把代码仓库完整地镜像下来 (本地库) 。这样任何一处协同工作用的文件发生故障,事后都可以用其他客户端的本地仓库进行恢复。因为每个客户端的每一次文件提取操作,实际上都是一次对整个文件仓库的完整备份 。

    分布式的版本控制系统出现之后,解决了集中式版本控制系统的缺陷 :

  • 服务器断网的情况下也可以进行开发,因为版本控制是在本地进行的

  • 每个客户端保存的也都是整个完整的项目 ,包含历史记录,更加安全

Git历史

img

Git工作机制

img
  • 工作区:指代码存放的位置(在本地电脑上的位置)

  • 工作区写的代码会先添加(git add)到暂存区(暂存区中的代码也是可以删掉的,并且不会产生历史记录),如果想产生历史版本,则需要提交 ( git commit ) 到 本地库 ,到本地库就删不掉了(因为保存了历史版本)

代码托管中心

代码托管中心是基于网络服务器的远程代码仓库,一般我们简单称为远程库

image-20220701105738573

Git常用命令

image-20220701110507131

版本穿梭命令:git reset –hard 版本号

**git rm –cached **:删除暂存区的代码命令

  • 在本地如果有修改,追踪文件状态则显示红色
  • 如果添加到暂存区则显示绿色

git log: 查看完整的git历史记录

  • git reflog 查看版本信息,简略的版本信息,版本号为完整版本号的前7位
  • git log 查看版本详细信息,有完整的版本号等信息

版本穿梭原理

  • Git 切换版本,底层其实是移动的HEAD 指针,具体原理如下图所示
  • HEAD 指针指向 master 分支,master分支指向具体哪个版本
img

Git分支

1. 分支概念

  • 在版本控制过程中,同时推进多个任务,为每个任务,我们就可以创建每个任务的单独分支
  • 使用分支意味着程序员可以把自己的工作从开发主线上分离开来,开发自己分支的时候,不会影响主线分支的运行
  • 分支可以简单理解为副本,一个分支就是一个单独的副本

2. 分支好处

  • 同时并行推进多个功能开发,提高开发效率
  • 各个分支在开发过程中,如果某一个分支开发失败,不会对其他分支有任何影响。失败的分支删除重新开始即可

3. 分支相关命令

image-20220701131018287

1. 合并分支

  • 正常合并不冲突
  • 合并产生冲突

原因:合并分支时,两个分支在同一个文件的同一个位置有两套完全不同的修改, Git无法替我们决定使用哪一个。必须 人为决定新代码内容

注意:

  • 如果产生了合并冲突,则需要手动的打开文件,人为的决定需要保留哪些内容,编辑有冲突的文件,删除特殊符号,决定要使用的内容
  • 此时的状态仍然为红色(修改),此时还需要调加到暂存区,然后提交本地库(此时提交本地库时不能带文件名)

Git团队协作

  • 团队内协作
img
  • 跨团队协作
img

Git远程库

  • 常用命令

image-20220701135336712

  • 推送的时候需要指定分支(推送和拉取时,本地库和远程库的库名可以不一致,只保证库中内容上的一致性)
  • 克隆时,只需要在本都创建一个文件夹用于保存远程库的内容即可,不用本地初始化仓库(克隆时不用登录账号)
  • 克隆时所做的事:1.拉取远程库 2.初始化本地仓库 3.创建好远程别名

IDEA操作Git

(118条消息) ❤️Git图文使用教程详解(三)_生命是有光的的博客-CSDN博客