• 【Git】Git 学习笔记_操作本地仓库


    1. 安装与初始化配置

    1.1 安装

    下载地址

    文件夹里右键点击 git bash here 即可打开命令行面板。

    git -v // 查看版本
    
    • 1

    1.2 配置

    git config --global user.name "heo"
    git config --global user.email xxx@gmail.com
    git config --global credential.helper store   // 保存
    git cnofig --global --list   //  查看配置信息
    
    • 1
    • 2
    • 3
    • 4

    在这里插入图片描述

    2. 新建仓库

    mkdir learn-git  // 创建文件夹
    git init  [xx]  // 初始化 git 仓库,为仓库名【可选】
    ls -a  // 查看该目录下所有文件
    ls -altr  // 查看该目录下所有文件的详细信息 或者  -ltr
    rm -rf  // 删除某个文件夹,删除 .git 文件夹即变成普通文件目录
    git clone https://github.com/xx/xx.git  // 克隆 github 仓库到本地
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    3. 工作区域和文件状态

    Git 使用时:

    工作区:实际开发时操作的文件夹

    暂存区:保存之前的准备区域(暂存改动过的文件)

    版本库:提交并保存暂存区中的内容,产生一个版本快照

    命令作用
    git add 文件名暂存指定文件
    git add .暂存所有改动的文件
    git commit -m “注释说明”提交并保存,产生版本快照

    在这里插入图片描述

    Git 文件 2 种状态:

    • 未跟踪:新文件,从未被 Git 管理过

    • 已跟踪:Git 已经知道和管理的文件

    使用 git status -s 查看文件状态

    文件状态概念场景
    未跟踪(U)从未被 Git 管理过新文件
    新添加(A)第一次被 Git 暂存之前版本记录无此文件
    未修改(‘’)三个区域统一提交保存后
    已修改(M)工作区内容变化修改了内容产生

    在这里插入图片描述


    暂存区的作用:

    暂存区:暂时存储,可以临时恢复代码内容,与版本库解耦

    暂存区 -> 覆盖 -> 工作区,命令:git restore 目标文件(注意:完全确认覆盖时使用)

    从暂存区移除文件,命令:git rm --cached 目标文件

    4. 添加和提交文件

    git status  // 查看仓库状态
    echo "这是第一个文件" > file1.txt  // 将回显的内容输出到一个文件内
    cat file1.txt  // 查看文件内容
    git add file1.txt // 将该文件提交到暂存区(文件状态从红色变为绿色)
    git commit -m "第一次提交"  // 提交文件到本地仓库,只能提交本身在暂存区的文件
    mv file.txt file4.txt  // 修改文件名从 file.txt 改为 file4.txt
    git add *.txt  // 通配符
    git add .  // 提交所有文件到暂存区
    git commit // 提交到本地仓库,然后会进入 vim 编辑器,编辑提交信息
    git log  // 查看提交本地仓库的日志
    git log --oneline // 查看简略的日志
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    5. 回退版本

    在这里插入图片描述

    --mixed 为默认参数。

    查看提交历史:git log --oneline 
    git reflog  // 查看操作的历史记录
    cp -rf repo repo-copy  // 复制仓库
    git reset --soft <要回退的版本id>  // 回退到某个版本
    ls  // 查看工作区的内容
    git ls-files  // 查看暂存区的内容
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    要谨慎使用 --hard ,但是误操作后不用担心,可以根据操作历史记录通过 reset 回溯到误操作前的版本。比如:git reset --hard <版本号>

    git reset --hard 版本号
    git reset --mixed 版本号 (与 git reset 等价)

    在这里插入图片描述

    6. 查看差异

    git diff
    
    • 1

    默认比较工作区和暂存区的内容。

    在这里插入图片描述

    当我们将它提交到暂存区,再用 git diff 查看,发现没有输出内容了。

    使用 git diff HEAD 比较工作区和版本库之间的差异。操作发现又会输出以上信息,因为此时我们还未提交。HEAD 指向分支的最新提交节点。

    使用 git diff --cached 比较暂存区和版本库之间的差异。操作发现又会输出以上信息。

    然后我们进行提交。上述两种操作就没有任何输出了。

    git diff 版本号1 版本号2 就可以查看两次版本之间的差异。

    git diff HEAD~ HEAD 或者 git diff HEAD^ HEAD 查看最新提交和上一次提交的差异。

    git diff HEAD~2 HEAD 查看最新提交和 2 次前提交的版本的差异。

    git diff HEAD~ HEAD file3.txt 查看某文件的信息。

    7. 删除文件

    rm file1.txt 删除工作区的文件,但是没有删除暂存区的文件。

    git ls-files 查看暂存区的文件。

    git add file1.txt 可以“隐性”的从暂存区删除文件。

    git rm file2.txt 同时删除工作区和暂存区的内容。

    git rm --cached file.txt 从暂存区删除文件,但保留在当前工作区中。

    然后进行提交,否则删除的文件在版本库中还是存在的。git commit -m "delete"

    8. .gitignore文件

    忽略掉不应该被加入到版本库中的文件,不会控制到已经添加到版本库中的文件。

    存放应该被忽略的文件:

    1. 系统或者软件自动生成的文件
    2. 编译产生的中间文件和结果文件
    3. 运行时生成的日志文件、缓存文件和临时文件
    4. 涉及身份、密码、口令、秘钥等敏感信息的文件

    注意:如果文件已经被暂存区跟踪过,可以从暂存区移除即可

    echo example.log > .gitignore

    -am 参数 同时完成添加至暂存区和提交至仓库的两个操作。

    echo >> 是在文本后面追加一行的意思。

    空文件夹不会被纳入版本控制中。

    git status -s 查看状态的简略模式。
    在这里插入图片描述
    ?? 第一个问号表示暂存区的状态,第二个问号表示工作区的状态。

    将文件夹添加到 .gitignore 中,temp/ ,忽略文件夹。

    .gitignore 文件夹匹配规则:https://git-scm.com/docs/gitignore匹配规则

    从上到下按行匹配,每一行代表一个忽略模式。

    • 空行或者以#开头的行会被Git忽略。一般空行用于可读性的分隔,#一般用作注释
    • 使用标准的glob模式匹配,例如:星号*通配任意个字符;问号匹配单个字符;中括号[]表示匹配列表中的单个字符,比如: [abc]表示a/b/c
    • 两个星号 ** 表示匹配任意的中间目录
    • 中括号可以使用短中线连接,比如:[0-9] 表示任意一位数字, [a-z]表示任意一位小写字母
    • 感叹号 表示取反
    # 忽略所有的 .a 文件
    *.a
    # 但跟踪所有的 lib.a,即便你在前面忽略了 .a文件
    !lib.a
    # 只忽略当前目录下的TODO文件,而不忽略 subdir/TODO
    /TODO
    # 忽略任何目录下名为 build的文件夹
    build/
    # 忽略 doc/notes.txt,但不忽略 doc/server/arch.txt
    doc/*.txt
    # 忽略 doc/ 目录及其所有子目录下的 .pdf 文件
    doc/**/*.pdf
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
  • 相关阅读:
    【题解笔记】PTA基础6-10:阶乘计算升级版
    数据迁移一致性测试探索与实践
    继承的详解
    Unity使用新输入系统InputSystem制作飞机大战Demo(对象池设计模式及应用)
    小程序怎么做?个人小程序怎么做?新手教程
    Day48——前端知识CSS
    产品经理如何做项目管理?
    超星平台——东电影答案
    人员定位系统如何赋能智慧电厂转型?
    dockerfile 搭建lnmp+wordpress,docker-compose搭建lnmp+wordpress
  • 原文地址:https://blog.csdn.net/XiugongHao/article/details/134190690