我的Git笔记第三篇—改写历史

目  录

3.1  查看提交历史

3.2  提交查找

3.3  提交修改

3.4  Git置位

3.5  给提交重新排序

3.6  将多个提交合并为一个提交

3.7  将一个提交分解为多个提交

3.8  恢复隐藏的历史


3.1  查看提交历史

参数配置

显示每个版本的修改差异:git log -p -2 | git shortlog

单行显示3条记录:git log --pretty=oneline -3 | git log --oneline

图形化显示:git log --graph | gitk

缉杀利器:git blame

查看一个文件每一行的提交记录

查看第6行到11行代码是谁的提交:git blame file.c -L 6,+5

查看某个指定文件的提交修改历史:git log -C file.c #若查看具体修改内容,使用参数-c

更多参数

-p #展开版本之间的内容变化

-n #显示最近的n次更新

HEAD~2 -n #指定位置开始的n个提交

HEAD~3..HEAD #两个版本之间的提交

--state #仅显示行数变化

--author #仅显示和指定作者相关的提交

--committer #仅显示和指定提交者相关的提交

 

3.2  提交查找

关键字查找

— 不同的参数灵活使用

    查找所有包含hello字符串的文件:git grep hello

    显示关键字所在文件的行号:git grep -n hello

    不显示内容,只显示文件名:git grep --name-only hello

    查看每个文件有多少个匹配:git grep -c hello

— 在特定版本里查找

    在v1.0版本里查找:git grep hello v1.0

组合查找

— 与查找、或查找

    查找hello world:git grep -e hello --and -e world

    查找hello或world:git grep -e hello --or -e world

查看命令帮助

git help grep

git grep --help

man git grep

 

3.3  提交修改

增补提交

— 修改最后一次提交:修改提交信息或者内容

git commit --amend

注:每次修改,commit对象的哈希值会改变的!

反转提交

— 将原来的提交取消掉:git revert SHA-1

— 反转多个提交:要先反转最后提交,防止冲突。此时原操作的逆操作都在暂存区,然后重新手动提交。

git revert -n HEAD #反转1

git revert -n SHA-1 #反转2

git commit -m "revert HEAD and SHA-1" #最后提交 或者使用 git revert --continue

反转时遇到冲突的解决方式

方式一:手动解决

进入发生的冲突文件,进行修改后,再暂存和提交

方式二:mergetool工具

git mergetool #进入修改冲突,再使用ax退出

 

3.4  Git置位

复位:将版本回退到工作区

git reset [--mixed] SHA-1

软复位:回退版本到暂存区

git reset --soft SHA-1

硬复位:会从版本库和工作目录中同时删除提交

git reset --hard SHA-1

 

3.5  给提交重新排序

通过人机交互模式改写历史

git rebase -i HEAD~3

— 编辑提交信息

— 退出,git会重新排序提交

— 该文件里的提交信息与使用git log --pretty=oneline显示的顺序正好相反

改写历史会生成新的commit

修改同一文件历史时,产生冲突手动解决步骤:

使用vi进入文件,添加每一步要增加的内容

保存退出,再使用git add提交到暂存区

再使用git rebase --continue命令进入交互模式,可以修改该步提交内容的备注信息

保存退出,若还有冲突,继续按上述步骤修改!

 

3.6  将多个提交合并为一个提交

把大象装到冰箱里三步合并为一步的操作步骤

1) 首先定位到要合并的三个提交

    git rebase -i HEAD~3

2) 将最新2个提交合并到它们的parent

    HEAD\HEAD^:将pick改为squash或s

3) 修改提交信息

4) 保存退出,查看提交历史

    git log --oneline

    会生成一个新的commit,而不是原来的那个HEAD^^

 

3.7  将一个提交分解为多个提交

大象装进冰箱一步分解为三步的操作步骤

1) 首先进入交互模式

    git rebase -i HEAD^

2) 定位需要修改的commit,将pick改为edit或e

3) 检出到工作区,重新修改,多次提交

    使用git status查看状态,用vi step(step是创建的文件)进入修改,先只保留step1的内容,

    保存退出,提交到暂存区,提交到版本库(git commit --amend

    再继续修改,后面使用(git commit -m "commit info")

4) 继续rebase

    git rebase --continue

5) 大功告成,查看提交记录

 

3.8  恢复隐藏的历史

找回“迷途的大雁”

删除的提交对象其实并没有真正删除,仍然保存在仓库里,称为悬垂提交对象。

通过 git reflog 命令查看当前状态

穿越历史

直接回退到第N次改变之前的版本,使用命令

git reset --hard master@{n}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值