Git(7)-Git commit

Git提交

  • 1.识别不同的提交
    • 1.1绝对提交名-ID
    • 1.2 引用和符号引用--HEAD
  • 2.查看提交的历史记录-git log
  • 3.提交图-gitk
  • 4.提交的范围
    • 4.1 X..Y
    • 4.1 X...Y
  • 5.查找bad 提交--git bisect
  • 6.查看代码修改者-git blame

命令概览

git commit -a # 直接提交修改和删除文件有效

加了-a,在 commit 的时候,能帮你省一步 git add ,但也只是对修改和删除文件有效, 新文件还是要 git add,不然就是 untracked 状态。

1.识别不同的提交

在开发的过程中,能正确的区分不同的提交是十分必要的。例如,在新建分支时,必须要选择某个提交来作为分支点;当比较代码差异时,必须指明两个提交。在git中可以通过显示引用或者隐式引用来指代每一个提交。

当你要与同事讨论相同数据的提交时,最好使用两个版本中的相同提交名。

1.1绝对提交名-ID

40位的十六进制数字

git log -l --pretty=oneline 1fbb58

1.2 引用和符号引用–HEAD

引用(ref)指向Git对象库中的对象。一般用引用指向提交对象。分支名称,标签名都是引用。

.git 目录中有三种的命名空间表示不同的引用

chenyingying01@cyy hello % ls -hl .git/refs
total 0
drwxr-xr-x  2 chenyingying01  staff    64B  8 28 11:28 heads     # 本地分支
drwxr-xr-x  3 chenyingying01  staff    96B  8 29 12:48 tags      # 标签
drwxr-xr-x  3 chenyingying01  staff    96B  8 29 12:48 remotes   # 远程跟踪分支

例如本地一个叫dev的分支是ref/heads/dev的缩写。

Git 自动维护几个用于特定目的的特殊符号引用:

  1. HEAD–始终指向当前分支的最近提交
  2. ORIG_HEAD–合并,复位操作会记录一下原来的HEAD,用于恢复或者回滚到之前的状态
  3. FETCH_HEAD–git fetch 命令将所有抓取分支的头记录到.git/FETCH_HEAD中,仅在刚刚抓去操作之后才有效。
  4. MERGE_HEAD–当一个合并操作正在进行时,其他分支的头暂时记录在MERGE_HEAD中。

符号引用–用一些特殊的符号集合来指代引用
^ 某一提交的上一个提交
~2 某提交的上两个提交

当一个提交具有多个父提交时,^表示不同的父提交

2.查看提交的历史记录-git log

git log HEAD # 输出每个可从HEAD找到历史提交日志消息
git log commit # 输出从该提交开始回溯的历史提交日志消息
git log commit1 commmit2 # 显示commmit1-commit2之间提交 
git log -n -p commitID   # -n限制回溯的条数,-p显示该文件修改的地方(打的布丁或者变更)

git log 提供的的可选择参数

git log --pretty=short   # 限制显示信息的数量, oneline, short, full
git log --abbrev-commit  # 显示散列值的缩写
git log -Sstring         # 根据给定的string,沿着文件的差异历史搜索。(找出与string相关的历史变化?太强大了。)

3.提交图-gitk

提交的时间戳是不可信的。
使用gitk 来查看提交图–需要配置一下gitk工具

4.提交的范围

4.1 X…Y

许多git命令 都允许 指定提交范围,例如 git log

git log X..Y   # 列出Y提交所有可达的提交,排除掉其中可达X的提交。
git log ^X Y   # 等价命令 

难点:辨别X和Y的可达提交,或者从显示结果中推出提交之间的逻辑关系

用处:如果你某个分支来自另一个版本库,那么^可以用来定位那些在你版本库而不在别人版库里的提交。

4.1 X…Y

对称差-求 XY各自拥有的提交的并集。

5.查找bad 提交–git bisect

有一天早上,你突然发现版本库出问题了,但是前天明明还是好的。这就需要定位到那个罪魁祸首(bad)提交。

git bisect : 指定提交范围,在该范围内进行二分查找,直至你定位到导致版本库出问题的提交。

启动二分搜索后,Git使用一个分离(detached) HEAD 来管理版本库的当前检出版本,支持定位操作。定位完成后需要将分支切换为原来的分支。

**关键点:**每次以reset工作区为搜索范围的中点提交,确定该提交是的好坏属性(在另一个终端中确定提交的好坏

在二分搜索的过程中,Git维护一个日志,来记录搜索的过程。(如果找不到自己的方向了)可以使用git bisect replay 命令使用日志文件作为输入。

git bisect strat    					# 启动二分搜索
git bisect bad    						# 指定坏提交,省略就是HEAD
git bisect good commitID/v2.6.27        # 指定好提交
# 输出中点版本,你确定改版本是好坏
git bisect good     # HEAD应该是移动到了中点提交,省略了HEAD(个人猜想)假定这个中点是好的
git bisect bad	    # 假定这个中点是坏的的
....
git bisect reset                        # 完成搜索后,换回原来的分支

6.查看代码修改者-git blame

查看文件的每一行 最后是xxx(谁) 在哪次提交中 修改的。

git blame -L 35, init/xxx.c # -L 是个什么作用。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/444671.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

leetcode111. 二叉树的最小深度

给定一个二叉树,找出其最小深度。 最小深度是从根节点到最近叶子节点的最短路径上的节点数量。 说明: 叶子节点是指没有子节点的节点。 示例: 给定二叉树 [3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7 返回它的最小深度 2. 思路&#xff1a…

Caffe将图像数据转换成leveldb/lmdb

Caffe中convert_imageset projrct将图像数据转换成Caffe能读取的数据格式leveldb/lmdb -gray=true //whether read gray image -shuffle=true //whether mix order -resize_height=28 -resize_width=28 -backend=lmdb …

leetcode155. 最小栈

设计一个支持 push,pop,top 操作,并能在常数时间内检索到最小元素的栈。 push(x) -- 将元素 x 推入栈中。 pop() -- 删除栈顶的元素。 top() -- 获取栈顶元素。 getMin() -- 检索栈中的最小元素。 示例: MinStack minStack new MinStack()…

理解Caffe的网络模型

目录 1. 初见LeNet原始模型2. Caffe LeNet的网络结构3. 逐层理解Caffe LeNet 3.1 Data Layer3.2 Conv1 Layer3.3 Pool1 Layer3.4 Conv2 Layer3.5 Pool2 Layer3.6 Ip1 Layer3.7 Relu1 Layer3.8 Ip2 Layer3.9 Loss Layer 1. 初见LeNet原始模型 Fig.1. Architecture of original …

Git(8)-分支

分支1. 分支名2. 创建分支-git branch3. 查看分支-git show-branch4. 检出分支4.1 有未提交的修改时进行检出4.2 合并变更到不同的分支git checkout -m5. 分离HEAD 分支6.删除分支分支操作命令概览 git branch # 列出版本库中的分支 git branch -r # 列出远程跟踪分支…

caffe开始训练自己的模型(转载并验证过)

学习caffe中踩了不少坑,这里我参考了此博主的文章,并体会到了如何训练自己的模型:http://www.cnblogs.com/denny402/p/5083300.html 学习caffe的目的,不是简单的做几个练习,最终还是要用到自己的实际项目或科研中。因…

leetcode169. 多数元素

给定一个大小为 n 的数组,找到其中的多数元素。多数元素是指在数组中出现次数大于 ⌊ n/2 ⌋ 的元素。 你可以假设数组是非空的,并且给定的数组总是存在多数元素。 示例 1: 输入: [3,2,3] 输出: 3 示例 2: 输入: [2,2,1,1,1,2,2] 输出: 2 思路&…

Git(9)-diff

分支1. diff in Linux/Unix2. diff in Git3. git diff 两点语法Linux/Unix 系统中存在diff 命令,可以用来显示两个文本/工作路径的差异。Git diff 在此基础上进行的扩展。 1. diff in Linux/Unix Linux 系统中的diff 命令:提供了一个文件如何转化为另一…

图像拼接(一):柱面投影+模板匹配+渐入渐出融合

这种拼接方法的假设前提是:待拼接的两幅图像之间的变换模型是平移模型,即两幅图像同名点位置之间只相差两个未知量:ΔxΔx 和ΔyΔy,自由度为2,模型收得最紧。所以只有所有图像都是用同一水平线或者同一已知倾斜角的摄…

图像拼接(二):OpenCV同时打开两个摄像头捕获视频

使用OpenCV实现同时打开两个USB摄像头,并实时显示视频。如果未检测有两个摄像头,程序会结束并发出“摄像头未安装好”的警告。这里推荐一个小巧的摄像头视频捕捉软件:amcap,使用它可以方便的检查每个摄像头是否能正常工作。 捕获…

Git(10)-merge

Merge1. 无冲突合并2. 有冲突合并-手动解决3. git diff in merge4. 废弃合并5. 合并策略merge相关的操作的命令 git checkout master git merge alternate # 解决冲突 ..... git add file_1 git commit -m "Add slternate line 5, 6" git reset --hard HEAD # b…

elasticsearch的Linux下安装报错问题解决

1.启动报错如下: vim /etc/security/limits.conf 然后修改如下 * soft nofile 65536 * hard nofile 65536sudo vi /etc/pam.d/common-session 添加 session required pam_limits.so sudo vi /etc/pam.d/common-session-noninteractive 添加 session required pam_limits.so…

leetcode120. 三角形最小路径和

给定一个三角形,找出自顶向下的最小路径和。每一步只能移动到下一行中相邻的结点上。 例如,给定三角形: [ [2], [3,4], [6,5,7], [4,1,8,3] ] 自顶向下的最小路径和为 11(即,2 3 5 1 11&#xff0…

Elasticsearchan相关插件和工具安装

1、下载elasticsearch-head的源码包 地址:https://github.com/mobz/elasticsearch-head/releases 2、安装node运行环境 地址:https://nodejs.org/en/download/ 3、安装完node之后编译elasticsearch-head 执行npm install -g grunt-cli编译源码 执行…

Git(11)-cherry-pick、reset、rebase

更改提交,版本回退1.get reset 重置HEAD指针的指向2.git cherry-pick3.git revert4.git commit --amend修改提交5.git rebase 变基提交5.1 git rebase --onto5.2rebase 产生冲突,解决冲突/终止变基5.3git rebase -i6. rebase Vs mergegit 提供了【修改】…

Elasticsearch集群节点配置详解

注意:如果是在局域网中运行elasticsearch集群也是很简单的,只要cluster.name设置一致,并且机器在同一网段下,启动的es会自动发现对方,组成集群。 三、配置浅涉 elasticsearch的config文件夹里面有两个配置文件&#…

MongoDB修改器使用

欢迎关注我的新微信公众号 ipgame,有什么问题可以提供交流的平台,欢迎大家讨论。 对于文档的更新除替换外,针对某个或多个文档只需要部分更新可使用原子的更新修改器,能够高效的进行文档更新。更新修改器是中特殊的键, 用来指定复杂的操作,比如增加、删除或者调整键,还…

Git(12)-stash, reflog

git stash1. git stash2. reflog命令概览git stash save "WIP:xxxxx" # save后可以跟笔记,WIP:work in process git stash list # 查看存储状态栈的条目 git stash pop # 当前工作目录和索引还原至最近一次save操作的内容…

cmake生成Win64位工程

使用cmake编译64的dll 一开始使用cmake --build .来生成了dll,在导入到java项目中使用的时候,才发现是32位的。导致程序不能正常运行,报错如下: Exception in thread "main" java.lang.UnsatisfiedLinkError Cant load…

leetcode 106. 从中序与后序遍历序列构造二叉树

根据一棵树的中序遍历与后序遍历构造二叉树。 注意: 你可以假设树中没有重复的元素。 例如,给出 中序遍历 inorder [9,3,15,20,7] 后序遍历 postorder [9,15,7,20,3] 返回如下的二叉树: 3 / \ 9 20 / \ 15 7 思路:和前…