shuguang's blog

环境决定基础,选择决定价值,努力决定方向。

关于Git 的使用

  • Git 是一个分布式版本控制系统,每个客户端都是一个完整的版本库。

  • Git 本质上是一个key-value的数据库加上默克尔树形成的有向无环图(DAG)。

  • 关于Git 更多内容,参考Pro Git book


#Git 简述

  • Git 背景

    • Git是创建之初是为了辅助Linux内核使用的。

  • Git 简介

    • Git是一个分布式版本控制软件,主要用于版本迭代,每一个客户端都是包含整个版本控制过程中的完整镜像。

  • Linux 基础命令

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
# 基础命令
1. cd <path>
2. cd ... <返回上一级目录>
3. pwd <当前路径>
4. ls(ll) <列出当前目录所有文件>
5. touch <filename> <新建文件>
6. mkdir <folder> <新建文件夹>
7. rm -f <folder> <删除文件夹>
8. mv <filename> <folder> <移动文件到文件夹>
9. cd- 返回之前所在的目录

# 扩展命令
10. reset <初始化终端>
11. clear <清屏>
12. history <查看历史命令>
13. help
14. exit
15. #表示注释
16. cd - <返回之前所在的目录>
17. set -e <确保脚本抛出遇到的错误>



#Git 配置

  • git config --local -l

    • 查看仓库配置 【优先级最高】

  • git config --global -l

    • 查看用户配置 【优先级次之】

  • git config --system -l

    • 查看系统配置 【优先级最低】

  • git config -l

    • 查看所有的配置信息,依次是系统级别、用户级别、仓库级别

  • Git对配置文件使用

    • 配置文件的权重是:仓库 > 全局 > 系统。
    • 配置文件的查找是:系统 > 全局 > 仓库。

  • git config 的配置文件路径

    • 仓库配置
      • 路径:当前路径
    • 用户配置(全局)
      • 路径:C:\Users\username\gitconfig
    • 系统配置
      • 路径:Git安装目录\etc\gitconfig

  • git config 常用配置

    • 编辑配置文件

      • git config --local -e 编辑仓库级别配置文件
      • git config --global -e 编辑用户级别配置文件
      • git config --system -e 编辑系统级别配置文件

    • 配置全局的用户名和邮箱

      • git config [--global] user.name "[name]"
      • git config [--global] user.email "[email address]"

    • 关于配置项的使用(默认都是在local配置中)

      • 增加配置项
        • git config [--local|--global|--system] --add section.key value
      • 获取配置项
        • git config [--local|--global|--system] --get section.key
      • 删除配置项
        • git config [--local|--global|--system] --unset section.key

#Git 的工作流程

  • 工作区:就是你在电脑里能看到的目录。

  • 暂存区:英文叫stage或index。一般存放在"git目录"下的index文件(.git/index)中,所以我们把暂存区有时也叫作索引(index)。

  • 版本库:工作区有一个隐藏目录.git,这个不算工作区,而是Git的版本库。

  • 创建本地仓库

    • git init [project-name]
    • git clone [url]

  • 将需要进行版本控制的文件添加到暂存区

    • git add .

  • 将暂存区中的文件提交到本地仓库

    • git commit -m [message]

  • 将本地仓库的文件提交到远程

    • git push [remote] [branch]

#Git 工作原理

  • Git 工作区域

    • 本地工作区域
      • Workspace:工作区
        • 需要进行版本控制的区域
      • Index/Stage:暂存区
        • 用于临时存放工作区中的改动,只是一个文件。
      • Repository:仓库区
        • 本地仓库,保存提交文件的所有版本信息。其中Head指向最新放入的仓库版本。
    • 中心服务器
      • Remote:远程仓库
        • 托管代码的服务器,主要进行数据版本控制和多人协同开发。

  • Git 文件状态

    • 已修改(modified)
    • 已暂存(staged)
    • 已提交(committed)

  • Git 的key-value的数据库

    • git数据库存储文件时,只关心文件整体内容,不关心单个文件内容是否改变。

#Git 使用

  • Git 本地仓库搭建

    • 创建本地仓库
      • git init 初始化Git仓库
      • git add . 添加所有文件到暂存区
      • git status [filename] 查看文件状态
      • git commit -m "message" 提交暂存区内容到本地仓库
    • 克隆远程仓库
      • git push 提交本体仓库内容到远程服务器

  • .gitignore文件的使用

    • 注释:#用于注释。
    • 通配符:*代表任意多个;代表一个字符;表示不被忽略。
    • folder/: 该目录下的所有文件,不包括该目录下的子目录。
    • /folder: 该目录下面的所有文件,默认文件和目录都忽略。

  • .gitkeep文件

    • 使 Git 保留一个空文件夹

  • 创建SSH密钥

    • ssh-keygen -t rsa -C '[email protected]'
      • 创建的公私钥对默认位于:C:\Users\username\.ssh

#Git 分支操作
  • Git分支基础操作:

    • 创建:
      • 创建仓库和分支:git init -b <branch_name>
      • 创建分支:git branch <branch_name>
      • 创建并切换分支:git checkout -b <branch_name>
    • 查看:git branch(仓库没有提交内容的话会看不见分支me)
    • 切换:git checkout <branch_name>
    • 删除:git <branch_name>(-d是删除已经合并过的, -D是删除没有合并过的)
    • 重命名:
      • git branch -m <old_name> <new_name>
      • git branch -m new-name
    • 合并:git merge <target_branch_name>

  • Git分支常用操作

    • git add .git add -A 区别
      • git add . 会把当前目录及子孙目录里的变动都加到暂存区
      • git add -A 添加当前目录下的所有文件到暂存区,包括已修改的文件
    • 在本地仓库中建立一个与远程仓库的别名,以便之后提交代码而不是每次都要输入远程仓库地址。
    • 确认已添加远程仓库别名
      • git remote -v
    • gh-pages分支和main分支推送到远程仓库,推送完成会自动添加关联映射
      • git push -u homepage gh-pages
      • git push -u homepage main
    • 将本地分支gh-pages与远程homepage仓库分支关联
    • 关联目的是在执行git pull, git push操作时就不需要指定对应的远程分支,你只要没有显示指定,git pull的时候,就会提示你。
      • git branch --set-upstream-to=homepage/gh-pages gh-pages
    • 删除建立的关联关系
      • git branch --unset-upstream
    • 强行拉取不同项目,解决不通项目不能合并问题,拉取完后再推送
      • git pull homepage main --allow-unrelated-histories
    • 查看本地分支与远程分支的映射关系
      • git branch -vv
    • 查看所有分支,包括本地和远程分支
      • git branch -a
    • 拉取远程仓库gh-pages的变化,并与本地分支gh-pages合并
      • git pull
    • 比较本地两个分支的文件差异
      • git diff gh-pages
    • git push命令的–force或-f 强制推送
      • git push --force homepage main:main
    • 将当前分支更改推送到远程仓库中的main分支
      • git push homepage main
    • 本地main发布更新到远程仓库gh-pages分支
      • git push homepage main:gh-pages

#关于Git在VScode中的使用
  • 配置默认终端配置为: Git Bash

    • 在xxx.code-workspace文件中添加如下代码:

    1
    2
    3
    4
    5
    "settings": {
    "terminal.integrated.defaultProfile.linux": "bash",
    "terminal.integrated.defaultProfile.osx": "bash",
    "terminal.integrated.defaultProfile.windows": "Git Bash", // 如果你在 Windows 上使用 Git Bash
    },

  • 使用快捷键 Ctrl+` 打开终端窗口

  • 安装插件GitLens


#致谢

GitLens

Pro Git book