• 2022/03/31 Git管理的是修改而非资源本身


    Git管理的是修改而非资源本身

    Git为什么被称为最好的分布式项目管理系统

    Git跟踪并管理的是修改,而非文件。

    场景举例:

    创建文件read.txt--->添加到暂存区git add read.txt--->此时在对read.txt文件进行修改--->直接commit

    此时查看暂存区状态:

    git status
    

    此时发现第二次修改文件的内容并没有被提交到版本库当中,而是存在暂存区当中

    注意:

    • 此时的修改发生在工作区而不是暂存区
    • git记录了本次修改而不是工作区修改后的文件本身

    如何再次提交修改:

    再次添加文件git add--->再次提交git commit

    在第一次提交之前再次添加修改的内容:

    第一次修改 ---> git add-- -> 第二次修改 ---> git add-- -> git commit

    比较工作区和最新版本的区别
    git diff HEAD -- 某个文件完整名称
    

    总结

    • 对于已经在暂存区的文件进行的修改不会被commitmaster分支上
    • 通过git status查看的是修改这个动作
    • 如果是第一种情况此时的暂存区是干净的

    撤销修改

    特点:

    由于git是对修改进行管理。所以需要注意这里的撤销修改有两种

    1. 撤销在工作区的此次修改行为
    2. 将暂存区的该文件的修改行为撤销掉。放回工作区

    撤销修改还由于文件的是否存在暂存区而导致撤销的结果不同

    当文件未曾添加到暂存区

    撤销指令:

    git checkout -- 文件名称1 文件名称2 ...
    

    将文件回滚到和版本库一模一样的状态

    文件已添加到暂存区

    将暂存区的修改拿出来放回工作区:

    git reset HEAD 文件名
    git reset HEAD <file>
    #回退版本的本质是修改head指针指向
    git reset --hard HEAD~100
    

    reset参数可以回退版本也可以回退暂存区的修改。这里需要注意的就是参数的使用

    此时在使用git status查看暂存区的状态就是空的了

    总结

    • git的指令不多。主要是通过参数去控制究竟是进行什么操作--->git checkout --git reset HEAD <file>
    • 时刻注意此次修改位于什么位置在进行对此次修改的操作
    • 此时这些的推送并没有真正的发生到远程仓库的主分支上。如果不小心将不需要的修改移除则可以使用版本回退git reset --hard HEAD回退到之前版本。只要这个版本还没有推送到远程

    删除文件

    对于工作区而言进行的删除操作

    rm <file>
    

    此时文件只是在工作区删除了。版本库还有。并且此时提交会发生冲突检测到工作区和版本库不一致

    此时可以对文件进行回滚。因为版本库当中还有该文件

    git checkout -- <file>
    

    对于工作区和版本库一起进行的删除操作

    git rm <file>
    

    此时版本库的文件和工作区的文件都删除了。无法对该文件进行回滚

    总结

    • git的删除要依据情况来看。删除工作区、删除工作区和版本库
    • 工作区删除可以checkout,工作区和版本库一起删除不可以恢复
  • 相关阅读:
    排序算法
    彩票随机6+1,开发实例
    synchronized关键字以及对象锁和类锁的区别
    shell基础
    easyui+Spring MVC+hibernate = 乐途
    easyui + jdbc 实现简单的数据库管理。
    js map
    struts2 using kindeditor upload pictures (including jmagic compressed images)
    easyui filebox 浏览图片
    easyui datagrid to excel
  • 原文地址:https://www.cnblogs.com/JunkingBoy/p/16081300.html
Copyright © 2020-2023  润新知