Git版本控制管理学习笔记5-提交
这个标题其实有些让人费解,因为会想这个提交是动词还是名称?
提交动作是通过git commit命令来实现的,提交之后会在对象库中新增一个提交对象。提交过程中会发生哪些变化,在上一篇笔记里面已经介绍过,看下那几张过程图就可以了。
需要明确的是,在Git中,版本库的变更和提交是一一对应的关系,也就是说,提交是将变更引入到版本库的唯一方法。
Git在提交时,会记录索引的快照并把快照存放到对象库中。下一次提交前,就会将当前索引中的状态与上一次生成的快照进行对比,派生出一个受影响的文件和目录列表。
一、原子变更集:
每一个提交都代表一个相对于之前的状态的单个原子变更集,提交时要么成功,要么全部拒绝。
二、识别提交:
这一节主要介绍的是提交在Git中的表示方式,包括显式引用和隐式引用。比如,一个40位的SHA1码就是显式引用,HEAD就是一个隐式引用。
这里将要介绍各种引用的不同书写方法。
- 绝对提交名:其实就是散列标识符。可以使用下面的命令来查看。
[root@flower1 committest]# git log -1 --pretty=oneline HEAD
2a9b52785b94c45852276c4febb4e05d9e25de1f new data ty
[root@flower1 committest]# git log -1 --pretty=oneline 2a9b
2a9b52785b94c45852276c4febb4e05d9e25de1f new data ty
- 引用和符号引用:本地特征分支名称、远程跟踪分支名称和标签名都是引用。目录中有3种不同的命名空间表示不同的引用:refs/heads/ref代码本地分支, refs/remotes/ref代表远程跟踪分支,refs/tags/ref代表标签。
[root@flower1 committest]# find .git/refs/
.git/refs/
.git/refs/tags
.git/refs/heads
.git/refs/heads/master
.git/refs/remotes/ref
.git/refs/remotes/ref/HEAD
相对提交名:看下面的例子就知道了。

C^1:等同于C^,表示提交C的第一父提交。
C^2:表示提交C的第二父提交。
C~1:等同于C~,表示提交C的第一个父提交。
C~2:表示提交C的第一个祖父提交。
C~3:表示提交C的第一个曾祖父提交。
C~3^2^2^:表示提交C的第一个曾祖父提交--的--第二父提交--的--第二父提交--的--第一父提交。
这里会用到的git命令如下:
[root@flower1 my_website]# git rev-parse master
e4db73549d3e9289b8ec9c5ec325e1a672942f28
[root@flower1 my_website]# git show-branch --more=35 | tail -10
[master] rename2
[master^] rename
[master~2] test
[master~3] remove
[master~4] test
[master~5] Remove a poem
[master~6] this is poem, the second file added!
[master~7] firsr change
[master~8] Initial contents of public_html
[root@flower1 my_website]# git rev-parse master~6
3df360e031a40a3c7e35856ed4f0b8f63551c89b
三、提交历史记录:
1、查看旧提交:
这里看几个示例命令就行了。
[root@flower1 my_website]# git log master
[root@flower1 my_website]# git log --pretty=short --abbrev-commit master~6 master~3
[root@flower1 my_website]# git log --pretty=short --stat master~6 master~4
2、提交图:

四、查找提交:
使用下列工具,暂不关注:
- git bisect
- git blame
- Pickaxe
Git版本控制管理学习笔记5-提交的更多相关文章
- Git版本控制管理学习笔记3-基本的Git概念
为了更近一步的学习和理解Git的理念,这一节介绍一下Git中的一些基本概念. 基本概念 对象库图示 Git在工作时的概念 一.基本概念: 1.版本库: Git的版本库就是一个简单的数据库,其中 ...
- Git版本控制管理学习笔记1-介绍
几乎所有的版本控制工具都是出于同样的目的:开发以及维护开发出来的代码,方便读取代码的历史,记录所有的修改.这里,介绍的是当前在开源社区内非常流行的版本控制工具Git.它是由Linus Torvalds ...
- Git版本控制管理学习笔记4-文件管理和索引
可以认为使用Git时,我们会遇到3个空间:工作目录.索引.版本库.我们关心的,就是在新建.修改等操作时,这三者之间发生了怎样的变化. 笼统的讲,就是在工作目录下编辑,在索引中积累修改, ...
- Git版本控制管理学习笔记2--起步
首先确保系统中已经安装了git,这里使用的linux系统. 一.命令行初步使用: 1.git命令: 列出它的选项和最常用的子命令.标准命令格式中,COMMAND代表的就是下面列出的子命令. [root ...
- Git 版本控制工具(学习笔记)
GIT(分布式) 一.Git 初始版本控制工具 1. 安装Git Ubuntu系统下,打开shell界面,输入: sudo apt-get install git-core 之后回车输入密码,即可完 ...
- C++内存管理学习笔记(5)
/****************************************************************/ /* 学习是合作和分享式的! /* Auth ...
- C++内存管理学习笔记(6)
/****************************************************************/ /* 学习是合作和分享式的! /* Auth ...
- C++内存管理学习笔记(7)
/****************************************************************/ /* 学习是合作和分享式的! /* Auth ...
- Docker Image管理学习笔记,ZT
Docker Image管理学习笔记 http://blog.csdn.net/junjun16818/article/details/38423391
随机推荐
- 【转】机器学习教程 十四-利用tensorflow做手写数字识别
模式识别领域应用机器学习的场景非常多,手写识别就是其中一种,最简单的数字识别是一个多类分类问题,我们借这个多类分类问题来介绍一下google最新开源的tensorflow框架,后面深度学习的内容都会基 ...
- RabbitMQ学习系列(三): C# 如何使用 RabbitMQ
上一篇已经讲了Rabbitmq如何在Windows平台安装,还不了解如何安装的朋友,请看我前面几篇文章:RabbitMQ学习系列一:windows下安装RabbitMQ服务 , 今天就来聊聊 C# 实 ...
- Assetbundles
Unity5.4 Assetbundles官方说明 http://iq007.blog.163.com/blog/static/265542019201681264813653?suggestedre ...
- centos 单独安装apachebench
这两天在测试php性能优化方法. 为了做压力测试可观察效果,就选择了ApacheBench来作为压力测试工具.其实就是大家常说的ab. 但是这个工具是安装apache web server的时候自带的 ...
- juery学习总结(二)——juery操作页面元素
所有的操作都可以分为增.删.改.查四种,juery选择器代表查看的功能,那么剩下的操作就是对页面元素增.删.改.页面元素有3部分构成:标签,属性和内容,juery对元素的操作可以从这3方面入手. 一. ...
- Oracle TO_DATE 日期格式
Oracle trunc()函数的用法 --Oracle trunc()函数的用法/**************日期********************/1.select trunc(sysdat ...
- HDU 2087 字符串
#include <stdio.h> #include <string.h> void main() { ) { ] = {'\0'}; ] = {'\0'}; ; scanf ...
- [Algorithm] 群体智能优化算法之粒子群优化算法
同进化算法(见博客<[Evolutionary Algorithm] 进化算法简介>,进化算法是受生物进化机制启发而产生的一系列算法)和人工神经网络算法(Neural Networks,简 ...
- C# Async, Await and using statements
Async, Await 是基于 .NEt 4.5架构的, 用于处理异步,防止死锁的方法的开始和结束, 提高程序的响应能力.比如: Application area Support ...
- C和指针 第十六章 标准函数库
字符串转换: long int strtol(char const *string, char **unused, int base); 将字符串转换为数值形式,遇到非法字符停止,如果stop不是NU ...