Git―基本操作

Git

  • ⛅认识 Git
  • ⛅安装 Git
    • Centos(7.6)
    • Ubuntu
  • ⛅Git―基本操作
    • 创建本地仓库
    • 配置本地仓库
    • 工作区, 暂存区, 版本库
      • 版本库
      • 工作区
    • 添加文件
    • 查看文件
    • 修改文件
    • 版本回退
      • ☃️案例
    • 撤销修改
      • ☃️案例
    • 删除文件

⛅认识 Git


想象如下场景, 一位画师收到了一份邀约画作的任务

这位画师便开始着手作画, 不久后产出作品(version1)

客户收到之后看了看对画师说, 画的很不错, 就是能不能再加些五颜六色的黑?

画师想, 您是甲方, 您说了算. 于是在原来的基础上产出作品(version2)

客户收到之后看了看对画师说, 画的很不错, 就是还缺那么一丝丝忧伤的感觉

画师想, 您是甲方, 您说了算. 于是在原来的基础上产出作品(version3)

客户收到之后看了看对画师说, 画的很不错, 但我还是喜欢你第一版的作品

画师想, 得亏我会用 Git, 于是画师顺利的拿到了第一版的作品并交付给客户

根据上面的描述, 我们大致对 Git 有所了解

  1. Git 是一个版本控制器, 能够记录每次的修改及版本的迭代
    譬如当客户问画师, 你第二版作品做出了什么修改的时候, 画师就可以利用 Git 查看做出了哪些修改
  2. Git 可以控制电脑中的所有格式文档

⛅安装 Git

Centos(7.6)

# 安装 Git 命令
sudo yum install git -y
# 查看 Git 版本
git --version

Ubuntu

# 安装 Git 命令
sudo apt-get install git -y
# 查看 Git 版本
git --version

⛅Git―基本操作

创建本地仓库

# 创建 Git 目录
mkdir gitcode
# 进入创建的 Git 目录
cd gitcode/
# 创建本地仓库
git init
# 查看仓库树形结构
tree .git/

有些小伙伴查看仓库树形结构会弹出 -bash: tree: command not found, 表明所在的系统中没有安装 tree 命令

安装 tree 命令sudo yum install tree

配置本地仓库

配置 name 和 email 避免后续向本地仓库提交内容时出错

# 配置当前仓库下的 name
git config user.name "在这里输入 name"
# 配置当前仓库下的 email
git config user.email "在这里输入 email"
# 查看配置是否成功
git config -l
# 删除配置的 name
git config --unset user.name
# 删除配置的 email
git config --unset user.email
# 配置所有仓库下的 name
git config --global user.name "在这里输入 name"
# 配置所有仓库下的 email
git config --global user.email "在这里输入 email"
# 删除所有仓库下的 name
git config --global --unset user.name
# 删除所有仓库下的 email
git config --global --unset user.email

注意

通过 git config --global 配置的属性无法通过 git config --unset 进行删除
但可以通过 git config --global --unset 进行删除

工作区, 暂存区, 版本库

版本库


Git―基本操作_第1张图片

图中的.git目录就是版本库

不允许对.git目录进行任何的修改

Git―基本操作_第2张图片

工作区


Git―基本操作_第3张图片
.git是版本库, 与.git处于同一目录下的被称为工作区

图中的ReadMe就处于工作区


Git―基本操作_第4张图片

  • stage, 又称为暂存区或者索引(index). 暂存区存放的不是一个个 git 对象, 而是 git 对象的索引
  • add, 将工作区中所有修改的内容添加至版本库的暂存区中
    • 修改包括: (1) 添加 (2) 修改 (3) 删除
  • commit, 将暂存区中的内容提交至 master 分支下. master 分支存放的也是 git 对象的索引

Git―基本操作_第5张图片

除去上述内容外, 还存在对象库(Objects), 从而到达对版本的控制
修改的工作区内容会写入到对象库的一个新的 git 对象中
(对比暂存区 → 存放的是 git 对象的索引)

添加文件

# 添加指定文件至暂存区
git add 指定的文件
# 添加当前目录下所有文件至暂存区
git add .
# 提交暂存区的全部文件到本地仓库
git commit -m "提交文件的描述信息"
# 提交暂存区的指定文件到本地仓库
git commit file1 file2 -m "提交文件的描述信息"
# 查看提交记录
git log
# 查看提交记录(简洁版)
git log --pretty=online

查看文件

# 查看 .git 文件内容
git cat-file -p commitId

commitId 可以在 Objects 中查看

Git―基本操作_第6张图片
Git―基本操作_第7张图片

paraent, 表示上一次的commitId

修改文件

# 查看从上一次提交到现在是否对文件进行过修改
git status
# 查看指定文件的暂存区与工作区的差异
git diff "filename"
# 查看指定文件的版本库与工作区的差异
git diff HEAD -- "filename"

版本回退

# 版本回退
git reset [--soft | --mixed | --hard] [HEAD]
# 查看 git 历史操作 → 用于查找对应的 commitId
git reflog

回退的本质 → 将版本库的内容进行回退

  • --mixed, 默认选项, 使用时可以不带该参数. 将暂存区的内容回退到指定版本
  • --soft, 将版本库的内容回退到指定版本
  • --hard, 将暂存区, 工作区的内容回退到指定版本
  • HEAD
    • 可写成commitId, 表示指定回退的版本
    • HEAD, 表示当前版本
    • HEAD^, 表示上一个版本
    • HEAD^^, 表示上上一个版本
    • 以此类推…

    • 也可以使用~数字表示
      • HEAD~0, 表示当前版本
      • HEAD~1, 表示上一个版本
      • HEAD~2, 表示上上一个版本
      • 以此类推…

☃️案例

  • ReadMe 文件
    • version1.0 提交的内容 → git1
    • version2.0 追加提交的内容 → git2
    • 此时 ReadMe 文件的内容为 git1, git2

现在将 ReadMe 文件的内容进行回退

工作区 暂存区 版本库 参数
git1 git2 git1 git2 git1 git2
git1 git2 git1 git2 git1 --soft
git1 git2 git1 git1 --mixed
git1 git1 git1 --hard

撤销修改

  • 对于撤销修改, 通常存在3种情况
    • 工作区的代码还没有 add → 情况1
    • 暂存区的代码还没有 commit → 请款2
    • 已经 add & commit → 情况3

对于情况3, 想要撤销修改的前提是没有执行 push 操作到远程仓库

☃️案例

  • ReadMe 文件
    • version1.0 提交的内容 → git1
    • version2.0 追加提交的内容 → git2
    • 此时 ReadMe 文件的内容为 git1, git2
工作区 暂存区 版本库 情况 解决方式
git1 git2 git1 git1 情况1 git checkout -- "filename"
git1 git2 git1 git2 git1 情况2 1. git reset HEAD 2. git checkout -- ReadMe
git1 git2 git1 git2 git1 git2 情况3 git reset --hard HEAD^

删除文件

# 删除工作区的文件 & add 对应的文件
git rm "filename"
# commit
git commit "filename" -m "提交文件的描述信息"

你可能感兴趣的:(Git,git,gitcode)