git对象:
每个git对象主要有三部分组成:类型,大小和内容。
大小就是指git对象内容的大小。
内容就是git对象的里面包含的东西,而这个主要取决于git对象的类型。
git对象有四种类型:"blob"、"tree"、 "commit" 和"tag"。
“blob”用来存储文件数据,通常是一个文件。
“tree”有点像一个目录,它管理一些“tree”或是 “blob”(就像文件和子目录)
一个“commit”只指向一个"tree",它用来标记项目某一个特定时间点的状态。
它包括一些关于时间点的元数据,如时间戳、最近一次提交的作者、指向上次提交
commits)的指针等等。
一个“tag”是来标记某一个提交(commit) 的方法。
git对象中HEAD和master的关系,HEAD表示的某一个提交(通常是最新提交),master代表的是master分支最新提交。当在master分支下时,这两个显示的哈希值是一个。可以用git rev-parse master 和git rev-parse HEAD
git重置:
git的重置主要说的是git reset()。
git reset 主要是操作master游标,即改变master指向的commit(master 指向的是当前分支中最新的
提交)。git reset 是一个很危险的操作,它是用来重置提交。主要中的命令有:
git reset --hard commitID ---------这个命令直接把所指定的commitID之前的commit取消了。
git reset --soft commitID ------------这个命令直接把所指定的commitID之前的commit退回到暂
存区。
git reset --mixed ---------- 这个命令直接把所指定的commitID之前的commit退回到工作区
git重置以后的恢复。
当需要找回被重置的commit时,可以使用git reflog寻找,用git cherry-pick 找回。