赞
踩
(一)Git本地仓库的初始化和配置
(二)Git文件代码提交详解
(三)Git分支与标签
(四)Git历史版本的回溯、修改及回滚
(五)Git远端同步
通过ref指向的commitID可以获取当前唯一的代码版本
Commit中会存有Parent Commit字段,通过Commit的串联关系,可获取到历史版本。
可以看到多了一个parent和前一个版本进行串联。
先获取tree
再根据tree获取文件blob,这样根据blob就能获取以前版本的文件内容了
git reset --hard commitID
其中commitID可以是上面的parent,也可是是其他节点的commitID
可使用git log获取最近的commitID
git commit --amend
通过这个命令可以修改最近一次commit信息,修改之后ref指向的commitID也会被更改。
使用git log查看已经被修改,commit也发生了变化,所以之前的commit在哪了呢,这儿就有一个新的概念。
悬空的object就是没有ref指向的object,我们使用以下命令进行查看
git fsck --lost-found
可以看到上面我们更改后留下的commit变成了悬空的object,也就是没有用的object,我们可以通过git的GC对他进行处理。
通过git gc可以删除一些不必要的东西,也会把现有的object进行打包压缩,减少空间的占有。
在gc之前我们要进行两个操作:
git reflog expire --expire=now --all
git gc --prune=now
gc之后,可以看到目录结构已经改变了,其实本质上只删除了悬空的object,其他的都打包在.git/packed-refs目录下。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。