【Git&Github】分布式版本控制系统和远程仓库

背景

(一)版本控制

1、文件的版本

  • 手动管理文件版本,达成文件修改的目的
  • 缺点
    • 操作繁琐
    • 命名不规范
    • 容易丢失
    • 协作困难

2、版本控制软件/系统

(1)初识
  • 定义:软件管理文件版本,便于查阅特定版本修订情况,也叫版本控制系统
  • 优点
    • 操作简便,仅识记几组简单终端命令
    • 易于对比
    • 易于回溯
    • 不宜丢失
    • 协作方便
(2)分类
① 本地版本控制系统
  • 特点:使用软件记录文件版本,提高工作效率,降低手动维护出错率
  • 缺点
    • 单机运行,不支持多人协作开发
    • 版本数据库故障会导致所有历史记录丢失
② 集中化版本控制系统
  • 特点:基于服务器、客户端运行模式
    • 服务器:保存文件所有更新记录
    • 客户端:保留最新文件版本
  • 优点:联网运行,支持多人协作开发
  • 缺点
    • 不支持离线提交版本更新
    • 中心服务器的崩溃和故障直接影响用户工作和历史保存
③ 分布式版本控制系统
  • 特点:基于服务器、客户端运行模式
    • 服务器:保存文件所有更新版本
    • 客户端:保留服务器完整备份
  • 优点
    • 联网运行,支持多人协作开发
    • 客户端支持离线本地提交版本更新
    • 服务器故障或损坏后,支持任何客户端备份进行恢复

(二)Git 基础概念

1、概念

  • 定义:一个开源的分布式版本控制系统
  • 特性
    • 直接记录快照,非差异比较
    • 几乎所有操作是本地执行

2、三个区域/三种状态

  • 工作区:文件已修改
  • 暂存区:文件已暂存
  • Git 仓库:文件已提交

一、Git 基础

(一)安装并配置 Git

  • 下载 Git 并安装
  • 配置用户信息
    • 用户名
    git config --global user.name "name"
    
    • 邮箱
    git config --global user.email "[email protected]"
    
  • 查询配置信息
    • 全局配置文件:win + e/C:Users/用户文件/.gitconfig
    • 终端命令查询
      • 所有全局配置
      git config --list --global
      
      • 指定全局配置
      git config user.name
      git config user.email
      
  • 获取帮助信息
    • 断网获取完整手册
    git help config
    
    • 简洁显示命令参考
    git config -h
    

(二)Git 基本操作

1、获取 Git 仓库

(1)初始化仓库 *
  • 将未进行版本控制的本地目录转为 Git 仓库
  • 步骤
    • 项目目录中,鼠标右键打开“Git Bash”
    • 执行 git init命令将当前目录转为 Git 仓库
    • git init 命令创建 .git 隐藏目录作为当前项目的 Git 仓库,其中包含初始的必要文件
(2)克隆仓库
  • 从其他服务器克隆一个已经存在的 Git 仓库

2、工作区文件状态

  • 工作区每个文件可能存在4种状态,分为两类
    在这里插入图片描述

3、查看文件状态 *

  • 繁琐报告:使用命令 git status查看文件所处状态
  • 精简报告:使用命令 git status -s/--short命令查看文件所处状态

4、跟踪新文件

  • 使用命令 git add 文件名开始跟踪一个文件
    • 2个红色问号:未跟踪文件(Untracked)
    • 绿色 A :新添加到暂存区

5、提交更新

  • 使用命令 git commit -m "提交消息"提交暂存区中等待被提交的文件

6、修改已提交文件

  • 使用命令 git statusgit status -s检查修改了的已提交文件
    • 红色 M :文件已修改但没有放入暂存区(Modified)

7、暂存已修改文件

  • 使用命令 git add 文件名暂存已修改文件
    • 绿色 M :文件已修改且放入暂存区(Modified)
  • 多功能命令git add
    • 开始跟踪新文件
    • 把已跟踪、已修改的文件放到暂存区
    • 把有冲突的文件标记为已解决

8、提交已暂存文件 *

  • 使用命令 git commit -m "提交消息"将暂存区中的文件快照提交到 Git 仓库
    • nothing to commit:没有需要提交的文件了

9、撤销对文件的修改

  • 使用命令git checkout -- 文件名撤销对文件的修改
  • 本质:用 Git 仓库中保存的文件,覆盖工作区指定文件
  • 注意:所有修改均会丢失且无法恢复,谨慎操作

10、向暂存区一次性添加多个文件 *

  • 使用命令git add .一次性将所有新增和修改过的多个文件加入暂存区

11、取消暂存文件

  • 使用命令git reset HEAD 移除文件名将文件从暂存区移除

12、跳过使用暂存区

  • 使用命令 git commit -a -m "提交消息"将所有已跟踪的文件暂存起来一并提交,跳过 git add 步骤

13、移除文件

  • 从 Git 仓库和工作区同时移除
    • git rm -f 文件名
  • 从 Git 仓库移除,保留工作区文件
    • git rm --cached 文件名

14、忽略文件

  • 存在一些无需纳入 Git 管理,也不希望显示未跟踪的文件,创建名为 .gitignore的配置文件,列出要忽略的文件的匹配模式
格式规范 #开头 /结尾 /开头 !开头 glob模式
含义 注释 目录 防止递归 取反 文件和文件夹匹配,简化的正则

在这里插入图片描述

15、查看提交历史

  • 使用命令 git log回顾项目的提交历史

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-DAI8Q265-1668133663583)(查看提交历史.jpg)]

16、回退到指定版本

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-VWZ3DFod-1668133663584)(回退到指定版本.jpg)]

二、GitHub

(一)背景

  • 开源协议
    • GPL:传染性极强,不允许修改和衍生代码作为闭源商业软件发布和销售,如:Linux
    • MIT:目前限制最少的协议,要求修改后的代码或发行包中必须包含原作者许可信息
  • 开源项目托管平台:专门用于免费存放开源项目源代码的网站
    • Github
    • Gitlab
    • Gitee

(二)使用

1、注册、新建空白远程仓库

2、访问远程仓库

(1) HTTPS
  • 零配置,但每次访问需输入账号密码

在这里插入图片描述

(2)SSH
  • 额外配置,实现本地仓库和 Github 免登陆加密传输,推荐使用
    • 私钥:id_rsa,存放于客户端电脑
    • 公钥:id_rsa.pub,配置到 Github
  • 生成 SSH key
  • 配置 SSH key
    • 记事本打开 id_rsa.pub 并复制内容
    • 登录 Github 并点击头像 => Settings => SSH and GPG Keys => New SSH key
    • 将 id_rsa.pub 内容粘贴到 Key 对应文本框
    • Title 文本框填写名称标识 Key 来源
  • 检测配置是否成功
  • 基于 SSH 将本地仓库到 Github

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-8FmreZ9o-1668133663586)(ssh.jpg)]

  • 将远程仓库克隆到本地
    • 打开Git Bash,输入 git clone 远程仓库地址并回车执行
    • Github 仓库内点击 Clone or download 获得远程仓库地址

三、Git 分支

(一)定义

  • 分支:彼此互不干扰,各自完成工作和内容,使用完后合并到 master 主分支
    • 主分支:用于保存和记录整个项目已完成的功能代码,不允许直接在主分支修改代码,风险过高,容易导致项目崩溃
    • 功能分支:从主分支分出专门开发新功能的分支,当新功能开发且测试完毕后合并到主分支
  • 作用:多人协作开发时防止互相干扰,提高协同开发体验

(二)操作

1、本地分支操作

  • 查看分支 git branch
  • 创建分支 git branch 新分支名称
    • 基于当前分支,创建新分支
    • 创建新分支后,依然处于旧分支
  • 切换分支 git checkout 跳转分支名称
  • 快速创建/切换分支 git checkout -b 跳转新分支名称
  • 合并分支 git merge 合并分支名称
    • 先切换到主分支/目标分支再操作 git merge
  • 删除分支 git branch -d 删除分支名称
    • 需要跳转到非删除分支再进行操作
  • 遇到冲突时合并
    • 在不同分支中对同一文件进行不同修改,需手动打开冲突文件手动解决

2、远程分支操作

  • 本地分支推送远程仓库
    • 第一次推送 git push -u 远程仓库名称 本地分支名称:远程分支名称
    • 后续推送 git push
  • 查看远程仓库所有分支列表 git remote show 远程仓库名称
  • 跟踪分支
    • 从远程仓库中把分支下载到本地仓库,保持本地分支和远程分支名称相同 git checkout 远程分支名称
    • 从远程仓库中把分支下载到本地仓库,将下载的本地分支重命名 git checkout -b 本地分支名称 远程仓库名称/远程分支名称
  • 拉取远程分支最新代码 git pull
    • 需要保持当前分支代码与远程分支代码一致
  • 删除远程仓库指定分支 git push 远程仓库名称 --delete 远程分支名称

猜你喜欢

转载自blog.csdn.net/weixin_64210950/article/details/127801631
今日推荐