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,工作区和版本库一起删除不可以恢复
posted @ 2022-03-31 13:13  俊king  阅读(33)  评论(0)    收藏  举报