跳到主要内容

Git重要内容回顾

Git 是一个分布式版本控制系统,它可以追踪文件的变化,记录文件的历史,协助多人协作开发项目,并且可以轻松地回退到历史版本。

一、Git基础名词

  1. 本地仓库(Repository):版本库。存储项目的不同版本,用作模板、长期保存、分发。
  2. 暂存区(Staging Area):缓冲或缓存作用。
  3. 工作区:编辑区。在此编辑项目,完成一个版本后提交给版本库。
  4. 提交(Commit):将暂存区的文件保存到仓库中,形成一个新的提交记录。
  5. 分支(Branch):用于并行开发和管理不同的功能特性。
  6. 远程仓库(Remote Repository):位于网络上的仓库,用于多人协作和备份,还有内容分发。

二、搭建Git环境

  1. 安装Git:下载网址

  2. 配置Git邮箱和用户名

    git config --global user.name "Your Name"
    git config --global user.email "youremail@example.com"

三、常用Git命令

  1. 初始化仓库:

    # 在当前目录创建仓库
    git init

    # 在指定目录创建仓库
    git init /path/to/target/

    # 克隆仓库到当前目录
    git clone url
  2. 基本操作(提交变更):

    # 查看查看仓库状态
    git status [-s]

    # 提交变更:工作区->暂存区
    git add <file>

    # 提交当前目录全部变更->暂存区
    git add .

    # 提交变更:暂存区->版本库
    git commit -m "本次提交说明"

    # 查看历史记录
    git log
  3. 分支管理:

    备注:VSCode 中使用 Git 插件可以图形化显示分支

    # 查看分支
    git branch

    # 创建分支
    git branch <branch_name>

    # 切换分支
    git switch <branch_name>

    # 合并分支:指定分支--合并到-->当前分支
    git merge <branch_name>

    # 删除分支
    git branch -d <branch_name>

    # 强制删除分支
    git branch -D <branch_name>
  4. 远程操作:

    # 关联远程仓库(可关联多个)
    git remote add <别名> <远程仓库url>

    # 查看关联
    git remote -v

    # 推送:版本库->远程仓库
    git push

    # 拉取:版本库<-远程仓库
    git pull
  5. 回退操作:

    格式
    ## 格式
    git reset [--mixed] <version_id>

    # --soft 版本库(id<-current)
    # --mixed 暂存区<-版本库(id<-current)
    # --hard 工作区<-暂存区<-版本库(id<-current)
    示例
    # 暂存区回退:工作区<-暂存区
    git checkout -- . #撤销全部
    git checkout -- example.txt #撤销单个

    # 暂存区<-版本库
    git reset . #撤销全部修改
    git reset example.txt #撤销指定文件

    # 工作区和暂存区<-版本库
    git reset --hard HEAD #恢复到当前版本
    git reset --hard <commit-id> #恢复到指定版本

    # 撤销指定提交的修改
    git revert <commit_id>
  6. 差异比较:

    # 工作区--暂存区
    git diff

    # 工作区--版本库
    git diff HEAD

    # 版本库--版本库
    git diff <id> <id>

    # 版本库--版本库
    git diff HEAD~ HEAD
    git diff HEAD~2 HEAD

    # 指定文件
    git diff <id> <id> <file>
  7. 删除文件:

    # 工作区
    rm <file>

    # 暂存区
    git rm --cached <file>

    # 工作区&暂存区
    git rm <file>

    # 查看暂存区文件
    git ls-files
  8. 忽略文件:

    # git忽略指定文件
    echo <file> >> .gitnore

    # 井号用作注释。

    通配符:
    * 通配任意个字符
    ? 匹配单个字符
    [] 表示匹配列表中的单个字符,比如:[abc]表示a/b/c
    ** 表示匹配任意的中间目录。
    [0-9] 表示任意一位数字,
    [a-z] 表示任意一位小写字母
    ! 表示取反

    应该忽略哪些文件:
    系统或软件自动生成的文件
    编译产生的中间文件和结果文件
    运行时生成日志文件、缓存文件、临时文件
    涉及身份、密码、口令、秘钥等敏感信息的文件
  9. 分支进阶&冲突:

    什么时候发生冲突?两个分支修改了同一文件同一行代码。

    # main分支 原始内容
    $ echo hello.txt
    2024年4月25日23:01:21

    # 分支1 修改内容
    $ echo hello.txt
    2024年4月25日23:02:00

    # main分支 修改内容
    $ echo hello.txt
    2024年4月25日23:02:36

    # 分支1--合并-->main,冲突产生
    $ git merge 分支1

    查看冲突

    # 查看冲突发生的文件
    git status

    # 查看冲突内容
    git diff

    cat hello.txt git在冲突文件中写入了冲突的内容和注释

    <<<<<<< HEAD
    2024年4月25日23:02:36
    =======
    2024年4月25日23:02:00
    >>>>>>> 分支1

    vim hello.txt 编辑冲突文件为:期望合并后的样子。

    2024年4月25日23:02:36 冲突是不好滴

    重新git add .和git commit -m "合并分支",冲突就消失了。

  10. 变基