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 ...
随机推荐
- javascript中的this作用域详解
javascript中的this作用域详解 Javascript中this的指向一直是困扰我很久的问题,在使用中出错的机率也非常大.在面向对象语言中,它代表了当前对象的一个引用,而在js中却经常让我觉 ...
- 用Matlab对数据进行线性拟合算法
http://www.cnblogs.com/softlin/p/5965939.html 挖坑
- HDU - 6333 Harvest of Apples
题意: T次询问,每次给出n,m.求sigma(k:0->m)C(n, k). 题解: 用离线莫队来做. 令S(n,m) = sigma(k:0->m)C(n, k). S(n+1, m) ...
- [JSOI2008]小店购物 & bzoj4349:最小树形图 最小树形图
---题面(洛谷)--- ---题面(bzoj)--- 其实是同一道题,,,样例都一模一样 题解: 一开始看想了好久,,,还想到了最短路和最小生成树,,然而写的时候才意识到最小生成树应该要用无向边 其 ...
- [学习笔记]分治FFT
一般的分治FFT是指: https://www.luogu.org/problemnew/show/P4721 考虑后面的f和前面的f有关系,但是贡献可以分着计算,逐一累计上去. 考虑cdq分治.算出 ...
- 2018 BAT最新《前端必考面试题》
2018 BAT最新<前端必考面试题> 1.Doctype作用? 严格模式与混杂模式如何区分?它们有何意义? (1). 声明位于文档中的最前面,处于 标签之前.告知浏览器的解析器,用什么文 ...
- Codeforces Round #508 (Div. 2) E. Maximum Matching(欧拉路径)
E. Maximum Matching 题目链接:https://codeforces.com/contest/1038/problem/E 题意: 给出n个项链,每条项链左边和右边都有一种颜色(范 ...
- 【题解】Casting Spells LA 4975 UVa 1470 双倍回文 SDOI 2011 BZOJ 2342 Manacher
首先要吐槽LRJ,书上给的算法标签是“有难度,需要结合其他数据结构”,学完Manacher才发现几乎一裸题 题目的意思是问原串中有多少个wwRwwR这样的子串,其中wR表示w的反串 比较容易看出来,w ...
- Leetcode 295. 数据流的中位数
1.题目要求 中位数是有序列表中间的数.如果列表长度是偶数,中位数则是中间两个数的平均值. 例如, [2,3,4] 的中位数是 3 [2,3] 的中位数是 (2 + 3) / 2 = 2.5 设计一个 ...
- X210串口配置与stdio移植
串口控制器初始化关键步骤 (1)初始化串口的Tx和Rx引脚所对应的GPIO(查原理图可知Rx和Rx分别对应GPA0_1和GPA0_0) (2)GPA0CON(0xE0200000),bit[3:0] ...