查看提交历史

然后在此项目中运行 git log,应该会看到下面的输出:

 

合并commit 信息

我们需要将 2dfbc7e8c4e858b5 合并成一个 commit,那么我们输入如下命令

 

其中,-i 的参数是不需要合并的 commit 的 hash 值,这里指的是第一条 commit, 接着我们就进入到 vi 的编辑模式

 

可以看到其中分为两个部分,上方未注释的部分是填写要执行的指令,而下方注释的部分则是指令的提示说明。指令部分中由前方的命令名称、commit hash 和 commit message 组成。

当前我们只要知道 picksquash 这两个命令即可。

  • pick 的意思是要会执行这个 commit
  • squash 的意思是这个 commit 会被合并到前一个commit

我们将 c4e858b5 这个 commit 前方的命令改成 squashs,然后输入:wq以保存并退出

 

这是我们会看到 commit message 的编辑界面

 

其中, 非注释部分就是两次的 commit message, 你要做的就是将这两个修改成新的 commit message。

 

输入wq保存并推出, 再次输入git log查看 commit 历史信息,你会发现这两个 commit 已经合并了。

 

注意事项:如果这个过程中有操作错误,可以使用 git rebase --abort来撤销修改,回到没有开始操作合并之前的状态。

看某次commit改了哪些文件

git log 查看commit的历史
git show <commit-hash-id>查看某次commit的修改内容
git log -p <filename>查看某个文件的修改历史
git log -p -2查看最近2次的更新内容

相关log 命令:GIT log命令全解析

        Git基础 - 查看提交历史

对比两个commit 之间的差异

git diff commit-id-1 commit-id-2 > d:/diff.txt
结果文件diff.txt中:

"-"号开头的表示 commit-id-2 相对 commit-id-1 减少了的内容。
"+"号开头的表示 commit-id-2 相对 commit-id-1 增加了的内容。

查看所有操作记录

git reflog 可以查看所有分支的所有操作记录(包括commit和reset的操作),包括已经被删除的commit记录(版本回退记录),git log 则不能察看已经删除了的commit记录

对已经存在的commit 进行 再次提交

  git cherry-pick <commit id>   #git reset --hard 退掉的提交也可以找回来

查看历史版本记录--指定显示条数

  git reflog -n

找回错误的重置

  git reset --hard 63ee781  #想回复到那个位置改写 版本号或日志标识即可

  每行记录都由版本号(commit id SHA),HEAD值和操作描述三部分组成。版本号在第一列,HEAD值在第二列,操作描述信息在第三列。
  版本号:在之前都有提到,标识着每一次提交、合并等操作时的版本,相当于唯一标识
  HEAD:值越小,表示版本越新,越大表示版本生成时间越久
 
查看某个分支的历史记录
  git reflog show   branchname 
 
      git-reflog - Manage reflog information

commit 修改描述

提交修改的代码(只是提交到本地的代码库,不会推送到服务器)

  git commit -am '修改说明'

如果觉得刚提交的“修改说明”写得不够好,前提是没有push到远程分支,可输入以下命令调整

  git commit --amend -m "your new message"

修改历史提交描述

git rebase -i HEAD~3    #表示要修改当前版本的倒数第三次状态:
git rebase -i master~1   #最后一次
git rebase -i master~5   #最后五次
git rebase -i HEAD~3    #当前版本的倒数第三次状态
git rebase -i 32e0a87f   #指定的 commit_id 位置

git rebase -i 修改历史提交  这个方法就是有冲突不断,解决起来比较麻烦

$ git status
interactive rebase in progress; onto 93f7a28
Last commands done ( commands done):
pick 794a68f js 常用插件
pick a9ce019 修改 README.md
Next commands to do ( remaining commands):
pick 7d91899 修改 README.md
pick 70bf6af edit css3.js file
(use "git rebase --edit-todo" to view and edit)
You are currently rebasing branch 'devPhp' on '93f7a28'.
(fix conflicts and then run "git rebase --continue")
(use "git rebase --skip" to skip this patch)
(use "git rebase --abort" to check out the original branch) Unmerged paths:
(use "git reset HEAD <file>..." to unstage)
(use "git add <file>..." to mark resolution) both modified: README.md no changes added to commit (use "git add" and/or "git commit -a")

简洁步骤(从网上查找的未亲测):

  git rebase -i HEAD~3

这个命令出来之后,会出来三行东东:

pick:*******

pick:*******

pick:*******

如果你要修改哪个,就把那行的pick改成edit,然后退出。

这时通过git log你可以发现,git的最后一次提交已经变成你选的那个了,这时再使用:

git commit --amend 来对commit进行修改,

修改完成后使用 git rebase --continue

git commit 操作的更多相关文章

  1. Git使用详细教程(3):git add, git commit详解

    在使用git之前,我们首先要初始化一个git管理的仓库,这里以博客(blog)为例 git init blog 我们进入目录,执行git status查看git状态,可以看到一个新的git管理的项目目 ...

  2. git<Commit和Push的区别>

    git作为支持分布式版本管理的工具,它管理的库(repository)分为本地库.远程库. git commit操作的是本地库,git push操作的是远程库. git commit是将本地修改过的文 ...

  3. git相关操作。

    之前只会用图形端的GIT中,命令行的比较陌生,整理下,供自己以后参考 关键的名词: 工作区:工作区 Index / Stage:暂存区 仓库:仓库区(或本地仓库) 远程控制:远程仓库 到项目目录下gi ...

  4. 如何规范git commit提交

    相信很多人使用SVN.Git等版本控制工具时候都会觉得每次提交都要写一个注释有什么用啊?好麻烦,所以我每次都是随便写个数字就提交了,但是慢慢的我就发现了,如果项目长期维护或者修改很久之前的项目,没有一 ...

  5. git push撤销、git commit 撤销、git add撤销、修改git提交信息

    原文地址:http://leisure.wang/?p=472 虽然自觉是一个Git工具的老手了,但是平时犯了一点错误,就发现有点捉襟见肘了.就好像今天我把一些代码玩坏了,想撤回到前几个版本去(此时已 ...

  6. git commit -am 合并操作

    二,合并的操作 1, 首先按需修改文件 echo >> lz66303.txt 2, 然后按需提交被修改的文件到HEAD缓存区,并把这个修改记录到分支中 git commit -am&qu ...

  7. [git] commit 相关的操作

    本地仓库状态相关的操作 1.  git  commit 将从上次提交后到现在这段时间内,暂存区所有的变化提交到版本库中: git  commit  -m '此次提交操作的简要说明(单引号括起来)' c ...

  8. Git误操作 git reset强制回滚 恢复commit方法

    参考: 找回Git中丢失的Commit Git误操作 git reset强制回滚 恢复commit方法 使用Git时,常有误操作,在Commit之后又执行了git reset --hard HEAD强 ...

  9. git commit 之后,撤销commit操作

    撤销.修改commit 写代码过程中,如果已经git add [files] git -m commit [files],没有push代码到远程仓库,想撤销commit,可以根据实际情况,使用以下参数 ...

随机推荐

  1. 如何边遍历集合边删除元素--使用Iterator中的remove()方法

    在遍历集合时,想将符合条件的某些元素删除,开始是用了下面的方法 public static void main(String[] args) throws UnsupportedEncodingExc ...

  2. 修改linux内核启动logo及显示位置

    转载于:http://blog.chinaunix.net/uid-28458801-id-3484269.html 在此基础上我又添加了我的一些不同的地方,仅供参考 内核版本: 2.6.35.3 l ...

  3. jquery datatable 多行(单行)选择(select),行获取/行删除

    jquery datatable 多行(单行)选择(select),行获取/行删除 代码展示 // 示例数据源 var dataSet = [ ['Tasman','Internet Explorer ...

  4. dll注入及卸载实践

    三种方法:具体详见<逆向工程核心原理>. 1.创建远程线程CreateRemoteThread() 2.使用注册表AppInit_DLLs 3.消息钩取SetWindowsHookEx() ...

  5. Java3D-对象基本变换

    一个球体与三个圆柱体形成一个组合体,在该组合体中,球体的透明度属性是由全透明到不透明之间变换,而且包括:旋转.平移等变换. package com.vfsd.test0621; import java ...

  6. 使用R语言绘制图表

    #========================================================#wolf moose graph version 20170616.R###Data ...

  7. MSER

    1.注释很全的分析:http://blog.csdn.net/zhaocj/article/details/40742191 2.opencv采用的mser实现方法 * 1. the gray ima ...

  8. form的提交方式

    1,最普通最常用的方法就是用submit type.. <form name=”form” method=”post” action=”#"> <input type=”s ...

  9. 事件Event 介绍总结

    最近在总结一些基础的东西,主要是学起来很难懂,但是在日常又有可能会经常用到的东西.前面介绍了 C# 的 AutoResetEvent的使用介绍, 这次介绍事件(event). 事件(event),对于 ...

  10. Others - 使用 GitHub Pages 搭建个人博客

    写在前面 GitHub 是技术知识分享的地方,如果使用它写其他奇奇怪怪的东西就算了. 正文 新建一个名为 username.github.io 的 repository.其中 username 为你的 ...