• Git三大分区学习


    转自:https://juejin.cn/post/6844903654311510030

    1.工作区、暂存区、版本库

    • 工作区(Working Directory) 是直接编辑的地方,直接操作。
    • 暂存区(Stage 或 Index) 数据暂时存放的区域。
    • 版本库(commit History) 存放已经提交的数据,push 的时候,就是把这个区的数据 push 到远程git仓库了。

     git add 命令会将工作区的修改添加到暂存区中,git commit执行时,会提交暂存区的内容到版本库中。

    2.查看对比

    git diff                工作区 vs 暂存区
    git diff head            工作区 vs 版本库
    git diff –-cached        暂存区 vs 版本库

     一开始,三个分区是一致的,在工作区修改文件后,另外两个保持一致;在add后,工作区和暂存区一致;commit后,三区一致。

    通过git diff命令查看某一文件的修改内容:

    myproj % git diff a.txt
    diff --git a/a.txt b/a.txt index f658172..fc7bd6a 100644 --- a/a.txt +++ b/a.txt @@ -1,3 +1,3 @@ testA testB -添加注释修改文件 \ No newline at end of file +0820 bg修改一下

    输出内容详解:https://developer.aliyun.com/article/658560

    • diff --git a/a.txt b/a.txt :a/a.txt代表源文件,也就是修改前的文件, b/a.txt代表比目标文件,也就是修改后的文件;
    • index f658172..fc7bd6a 100644: 表是文件哈希值。
    • 第三四行:---代表源文件,+++代表目标文件;
    • 第五行:差异小结,@@ -1,3 +1,3 @@ ,分为两个部分,第一个是-1,3,-表示源文件,1,2表示从第一行开始的第3行,后面的+1,3,则表示目标文件的第一行开始的第三行内容。差异小结可能会有多个。
    • 剩下的行都是具体的差异信息,其中以空格开头的行代表源文件与目标文件没有差异,以-开头 的行代表在源文件的基础上删除,以+开头代表在源文件基础上添加;

    git add .后,

    myproj % git add .
    myproj % git diff     //无内容输出
    myproj % git diff head    //查看工作区和版本库的区别
    diff --git a/a.txt b/a.txt
    index f658172..fc7bd6a 100644
    --- a/a.txt
    +++ b/a.txt
    @@ -1,3 +1,3 @@
     testA
     testB
    -添加注释修改文件
    \ No newline at end of file
    +0820 bg修改一下
    myproj
    % git diff –-cached //查看暂存区和版本库的区别,有问题。 fatal: 有歧义的参数 '–-cached':未知的版本或路径不存在于工作区中。 使用 '--' 来分隔版本和路径,例如: 'git <命令> [<版本>...] -- [<文件>...]'

    commit之后第三个命令仍是有问题,不知道为什么。

    3.三个区的回退关系

    https://www.liaoxuefeng.com/wiki/896043488029600/897889638509536

    情况1:在工作区做了修改,并未添加到暂存区,想撤销工作区的修改,用 git restore file;

    情况2:在工作区做了修改,并用git add 添加到了暂存区,未提交;想撤销,分两步,1.先撤销暂存区的修改,用 git restore --staged file, 2.然后参考情况1撤销工作区的修改;

    情况3:在工作区做了修改,且git add git commit添加并提交了内容,想撤销本次提交,直接用 git reset --hard HEAD^回退版本,即可保证工作区,暂存区,版本库都是上次的内容。

  • 相关阅读:
    WP之Sql Server CE数据库
    WP布局之Pivot和Panorama
    设计模式之职责链模式
    设计模式之命令模式
    设计模式之桥接模式
    设计模式之组合模式
    设计模式之备忘录模式
    设计模式之适配器模式
    记录参加微软打造开发者社会生态圈线下会议
    ”我的2016“-太多难忘的第一次
  • 原文地址:https://www.cnblogs.com/BlueBlueSea/p/16608304.html
Copyright © 2020-2023  润新知