Git的骚操作

Git 命令中的 merge、rebase、reset、revert、cherry-pick 等常用骚操作的具体原理


1.git merge


  • Fast-forward (–ff)
    当当前分支与正在合并的分支相比没有额外提交时,可能会发生快速向前合并,Git首先尝试执行最简单的选择 Fast-forward 模式合并不会创建新的提交,而是合并当前分支中合并的分支上的提交
    master: git merge dev
    ![在这里插入图片描述](https://img-blog.csdnimg.cn/2020060314360630.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3d1eGlhbndlaXphaQ==,size_16,color_FFFFFF,t_70
  • No-fast-foward (–no-ff)
    如果您当前的分支与要合并的分支相比没有任何额外的提交,那就太好了,但不幸的是,这种情况很少发生!如果我们在当前分支上提交了要合并的分支没有的更改,git将执行No-fast-foward 合并。使用No-fast-foward合并,Git在活动分支上创建一个新的合并提交。提交的父提交指向活动分支和要合并的分支!
    在这里插入图片描述

2.git rebase


rebase 是”变基”的意思,这里的”基”,在我理解是指[多次] commit 形成的 git workflow,使用 rebase,我们可以改变这些历史提交,修改 commit 信息,将多个 commit 进行组合。


3.git reset


soft reset 软重置
我们可以撤销提交记录,但是保留新建的文件。
在这里插入图片描述
Hard reset硬重置
硬重置时:无需保留提交已有的修改,直接将当前分支的状态恢复到某个特定提交下。需要注意的是,硬重置还会将当前工作目录(working directory)中的文件、已暂存文件(staged files)全部移除!
在这里插入图片描述


4.git revert


举个例子,我们在 ec5be 上添加了 index.js 文件。之后发现并不需要这个文件。那么就可以使用 git revert ec5be 指令还原之前的更改。
在这里插入图片描述


5.git cherry-pick


举个例子:dev 分支上的 76d12 提交添加了 index.js 文件,我们需要将本次提交更改加入到 master 分支,那么就可以使用 git cherry-pick 76d12 单独检出这条记录修改。


6.git fetch


使用 git fetch 指令将远程分支上的最新的修改下载下来。


7.git pull


git pull 指令实际做了两件事:git fetch 和 git merge。


8.git reflog


git reflog 用于显示所有已执行操作的日志!包括合并、重置、还原,也就是记录了对分支的一切更改行为。

git reset HEAD@{1} 将HEAD指针回退到HEAD@{1}这个commit上
在这里插入图片描述

转载地址:https://mp.weixin.qq.com/s/sCi_DE1urP1OE13wbgFHUg

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值