git学习笔记三
1.每个分支的历史版本维护信息位置是.git/logs/refs/heads/master,这个位置的信息是文本文件,不是引用。
harvey@harvey-Virtual-Machine:~/demo4$ cat .git/logs/refs/heads/master #查看这个位置的信息,发现最上面的第一行父节点的id 当前节点的id 后面的就是用户名和提交的评论
0000000000000000000000000000000000000000 9aa4a88d227ece5d9079776991ded74e2e577bf8 zhanghaiyu <zhanghaiyu@qq.com> 1397201624 +0800 commit (initial): 第一次提交
9aa4a88d227ece5d9079776991ded74e2e577bf8 ba393f1baf6c217803d93c3a3d4dfdbe5c4039de zhanghaiyu <zhanghaiyu@qq.com> 1397204705 +0800 commit: 第二次提交
2.和.git/logs/refs/heads/master相呼应的是.git/refs/heads/masters这个文件也是文本文件,这个文本文件就是就是master分支的游标,我们使用reset命令的时候如果后面加commit的id就是改变的这个文件的内容。
harvey@harvey-Virtual-Machine:~/demo4$ git reset HEAD --soft #直接执行reset head的soft操作实际上相当于什么也没有操作,因为HEAD就是当前.git/refs/heads/master的引用,而用soft则只是改变head的文件值,不过如果执行git reset HEAD^ -soft就是修改为.git/refs/heads/maste的id在.git/logs/refs/heads/master里面的上一个版本的引用 。git reset --fixed则是不仅改变了这个文件的内容,还会用这个信息改变index文件的信息。 如果用git reset --hard则是不仅改变这个文件的内容还会改变index文件的内容同时还会改变工作区的内容
3.checkout命令的作用则是修改HEAD执行的引用,默认HEAD指向的是master分支也就是.git/refs/heads/master当我们确定了新的分支以后,怎么样让这个引用执行新的文件那,就是用checkout ,checkout可以修改HEAD执行的文件,他指向那个文件,决定着我们当前工作的工作目录。checkout的作用不仅是切换了分支,这个时候,分支文件默认是有上次保存的游标的内容,而且还把游标所执行的内容完全覆盖了index而且覆盖了工作空间。
reset命令只有reset –hard才会修改工作空间而任意一个checkout命令都会修改工作空间的内容。
4.在普通的git设置都有这个配置core.logallrefupdates true,也就是所有的日志更改信息都要保存,所以我们reset后再观察.git/logs/refs/heads/master
harvey@harvey-Virtual-Machine:~/demo4$ git log0 #打开git log信息
ba393f1baf6c217803d93c3a3d4dfdbe5c4039de 第二次提交
9aa4a88d227ece5d9079776991ded74e2e577bf8 第一次提交
harvey@harvey-Virtual-Machine:~/demo4$ git reset HEAD^ #更改.git/refs/heads/master文件的内容
harvey@harvey-Virtual-Machine:~/demo4$ git log0 #再查看log发信只有第一个的提交了
9aa4a88d227ece5d9079776991ded74e2e577bf8 第一次提交
harvey@harvey-Virtual-Machine:~/demo4$ cat .git/logs/refs/heads/master #查看.git/logs/refs/heads/master文件的内容
0000000000000000000000000000000000000000 9aa4a88d227ece5d9079776991ded74e2e577bf8 zhanghaiyu <zhanghaiyu@qq.com> 1397201624 +0800 commit (initial): 第一次提交
9aa4a88d227ece5d9079776991ded74e2e577bf8 ba393f1baf6c217803d93c3a3d4dfdbe5c4039de zhanghaiyu <zhanghaiyu@qq.com> 1397204705 +0800 commit: 第二次提交
ba393f1baf6c217803d93c3a3d4dfdbe5c4039de 9aa4a88d227ece5d9079776991ded74e2e577bf8 zhanghaiyu <zhanghaiyu@qq.com> 1397207296 +0800 reset: moving to HEAD^
#也就是这个日志的文件的信息是通过两个命令来完全查看的
#=======1======================================================================
harvey@harvey-Virtual-Machine:~/demo4$ git log
commit 9aa4a88d227ece5d9079776991ded74e2e577bf8
Author: zhanghaiyu <zhanghaiyu@qq.com>
Date: Fri Apr 11 15:33:44 2014 +0800 第一次提交 Signed-off-by: zhanghaiyu <zhanghaiyu@qq.com>
#=======2======================================================================
harvey@harvey-Virtual-Machine:~/demo4$ git reflog
9aa4a88 HEAD@{0}: reset: moving to HEAD^
ba393f1 HEAD@{1}: commit: 第二次提交
9aa4a88 HEAD@{2}: commit (initial): 第一次提交
git学习笔记三的更多相关文章
- Git学习笔记(三)
Git提交相关内容 在Git提交时,会保存一个提交对象,该对象包括一个指向暂存区内容快照的指针,包括本次提交作者等相关附属信息,包括零个或多个指向该提交对象的父对象指针:首次提交时是没有祖先,普通提交 ...
- Git学习笔记三--管理修改、撤销修改、删除文件
1.管理修改 什么是修改?比如你新增了一行,这就是一个修改,删除了一行,也是一个修改,更改了某些字符,也是一个修改,删了一些又加了一些,也是一个修改,甚至创建一个新文件,也算一个修改. 为什么说Git ...
- Git学习笔记(四)
一.忽略特殊文件 在Git工作区的根目录下创建一个特殊的.gitignore文件,然后把要忽略的文件名填进去,Git就会自动忽略这些文件. 不需要从头写.gitignore文件,GitHub已经为我们 ...
- GIT学习笔记(3):分支管理
GIT学习笔记(3):分支管理 何谓分支 GIT是如何存储数据的 GIT不是存储文件差异或者变化量,而是一系列文件的快照.在Git提交时,会保存一个提交(commit)对象,该对象包含一个指向暂存内容 ...
- GIT学习笔记(2):时光机穿梭与远程仓库
GIT学习笔记(2):时光机穿梭与远程仓库 撤销操作 1.GIT如何跟踪修改 在我们修改了代码内容后,执行了git add和git commit命令来将其交由Git进行版本控制.我们前面举的例子是这样 ...
- Oracle学习笔记三 SQL命令
SQL简介 SQL 支持下列类别的命令: 1.数据定义语言(DDL) 2.数据操纵语言(DML) 3.事务控制语言(TCL) 4.数据控制语言(DCL)
- Git学习笔记与IntelliJ IDEA整合
Git学习笔记与IntelliJ IDEA整合 一.Git学习笔记(基于Github) 1.安装和配置Git 下载地址:http://git-scm.com/downloads Git简要使用说明:h ...
- Git学习笔记(10)——搭建Git服务器
本文主要记录了Git服务器的搭建,以及一些其他的配置,和最后的小总结. Git远程仓库服务器 其实远程仓库和本地仓库没啥不同,远程仓库只是每天24小时开机为大家服务,所以叫做服务器.我们完全可以把自己 ...
- git 学习笔记6--remote & log
git 学习笔记6--remote & log 创建SSH Keys ssh-keygen -t rsa -C "1050244110@qq.com" 本地关联远程 git ...
随机推荐
- POJ3690:Constellations——题解
http://poj.org/problem?id=3690 题目大意:给一个图和几个子图,判断有多少种子图在原图出现过. —————————————————————— 二维哈希即可,操作看代码,我觉 ...
- BZOJ4698 & 洛谷2463:[SDOI2008]Sandy的卡片——题解
http://www.lydsy.com/JudgeOnline/problem.php?id=4698 https://www.luogu.org/problemnew/show/P2463#sub ...
- GCJ2008 APAC local onsites C Millionaire
自己Blog的第一篇文章,嗯... 接触这道题,是从<挑战程序设计竞赛>这本书看来的,其实头一遍读题解,并没有懂.当然现在已经理解了,想想当初可能是因为考虑两轮的那张概率图的问题.于是决定 ...
- halcon程序输出成c++程序
halcon语法程序: dev_open_window (0, 300, -1, -1, 'black', WindowID) read_image (Die4, 'C:/Users/Public/D ...
- Windows不能用鼠标双击运行jar文件
Java应用程序jar文件可以由 JVM(Java虚拟机)直接执行,只要操作系统安装了JVM便可以运行作为Java应用程序的jar文件.可是,很多朋友遇到一个难题,那就是下载了jar文件以后在Wind ...
- XOR and Favorite Number (莫对算法)
E. XOR and Favorite Number time limit per test 4 seconds memory limit per test 256 megabytes input s ...
- HDU多校(Distinct Values)
Problem Description Chiaki has an array of n positive integers. You are told some facts about the ar ...
- bzoj 3212 Pku3468 A Simple Problem with Integers 线段树基本操作
Pku3468 A Simple Problem with Integers Time Limit: 1 Sec Memory Limit: 128 MBSubmit: 2173 Solved: ...
- JavaScript中this的用法详解
JavaScript中this的用法详解 最近,跟身边学前端的朋友了解,有很多人对函数中的this的用法和指向问题比较模糊,这里写一篇博客跟大家一起探讨一下this的用法和指向性问题. 1定义 thi ...
- vijos 1069 新年趣事之红包 Prim水题
描述 xiaomengxian一进门,发现外公.外婆.叔叔.阿姨……都坐在客厅里等着他呢.经过仔细观察,xiaomengxian发现他们所有人正好组成了一个凸多边形.最重要的是,他们每个人手里都拿着一 ...