【重学Git】高级命令篇

1.分离HEAD。HEAD 总是指向当前分支上最近一次提交记录。 所谓分离HEAD,就是让HEAD直接指向某一条具体的提交记录,而不是默认的通过分支名指向当前分支的最近一条提交记录。

2.相对引用^。如 git checkout HEAD^ 表示移动到当前HEAD指向提交节点的父节点。

3.相对引用~。如 git checkout HEAD~3 表示移动到当前HEAD指向提交节点的上三个祖先节点。

(以上三个指令都是让HEAD的指向跳来跳去,那这有什么用呢?有的,它最大的作用在于移动分支,也就是篡改提交树,当然并不涉及远程分支)

4.git branch -f master HEAD~3: 表示强制将master分支指向当前HEAD所指提交节点往上的第三级父提交,但是我并不接受这种做法,因为胡乱地修改分支指向会使得提交树产生混乱。

4.撤销本地提交,git reset HEAD~2 :表示撤销提交一直到到当前HEAD指向提交节点往上的第二级提交节点。

5.撤销远程提交,也就是我们常说的:版本回退。git revert HEAD :表示撤销当前HEAD指向的提交记录,注意:这跟reset参数的用法是不一样的。revert参数指的是需要被舍弃的某一个提交记录。它会产生一个新的提交记录,或者叫“撤销记录”。用于保证提交树的走向一直是单向的。

(revert之后再push到远程,就可以看到版本已经回退了)

原文地址:https://www.cnblogs.com/zhangnan35/p/11230575.html

时间: 2024-10-12 14:41:12

【重学Git】高级命令篇的相关文章

你需要知道的12个Git高级命令

众所周知,Git目前已经是分布式版本控制领域的翘楚,围绕着Git形成了完整的生态圈.学习Git,首先当然是学习Git的基本工作流.相比于SVN等传统版本控制系统来说,Git是专为分布式版本控制而生的强大工具.使用Git时常用的命令有pull.commit.push等,貌似很简单.不过,有时你会遇到合并冲突的情况,Git这时会将冲突标记出来,需要你手工来解决.有时,你会不小心将代码提交到错误的分支上,并且又推送到了远程仓库.还有些时候,你需要切换到不同的分支,但Git却不让你这么做,因为还有未保存

你需要知道的12个Git高级命令【转】

转自:http://www.linuxidc.com/Linux/2016-01/128024.htm 众所周知,Git目前已经是分布式版本控制领域的翘楚,围绕着Git形成了完整的生态圈.学习Git,首先当然是学习Git的基本工作流.相比于SVN等传统版本控制系统来说,Git是专为分布式版本控制而生的强大工具.使用Git时常用的命令有pull.commit.push等,貌似很简单.不过,有时你会遇到合并冲突的情况,Git这时会将冲突标记出来,需要你手工来解决.有时,你会不小心将代码提交到错误的分

重学线代——声明篇

为啥重学线代呢? 1.当初学得模棱两可,时间长了啥也没剩下 2.越来越发现线代很流弊,很有用(不只是线代,各门数学都有此感触) 3.比较巧合地在网络上发现了个很好的线代教学资源 4.假期浪费了太可惜了 你这堆博客要写点啥呢? 课程笔记.个人领悟.无知吐槽.等等等等 你还想说点啥么? 没了 哦 恩

Git实战指南----跟着haibiscuit学Git(第八篇)

笔名:  haibiscuit 博客园: https://www.cnblogs.com/haibiscuit/ Git地址: https://github.com/haibiscuit?tab=repositories  (欢迎star) 本项目地址: https://github.com/haibiscuit/StudyBook 尊重笔者的劳动成果,未经允许请不要转载 七:git diff 作用:比较各个分区共同文件的不同(即想要使用该命令,各个分区都要有相同的文件) (1) 展示工作区和暂

Git实战指南----跟着haibiscuit学Git(第十篇)

笔名:  haibiscuit 博客园: https://www.cnblogs.com/haibiscuit/ Git地址: https://github.com/haibiscuit?tab=repositories  (欢迎star) 本项目地址: https://github.com/haibiscuit/StudyBook 尊重笔者的劳动成果,未经允许请不要转载 九:git commit --amend 简称:版本替换(对文件进行替换,添加的操作),即替换本地仓库的commit id,

【重学Git】整理提交记录

有时候我们在本分支做了一个很小的更改提交,其他分支想直接拿到这个更改提交,有没有一种不像merge或rebase这么正式的做法呢?也就是说:我仅仅是想获取其中一个小改变而已.cherry-pick就是这样一个不错的命令. 说一种我认为合适的使用场景:假设我在dev分支开发一个新功能,涉及到不少的修改.突然,产品说把某某页面的样式调一下.我在dev分支上改好了这个样式,但是我的新功能还没开发完.这时候,我就切到master分支,用cherry-pick的方法把dev上那个样式的提交记录给复制过来.

重学Git以及学习资料

工作这几年,git的操作还是停留在廖老师的git教程的基础水平.考虑到今后要逐渐承担更重要的工作内容,决定重新深入学习Git.首先是学习资料的选择,买过的实体书是<Git版本控制管理>,但之前看了是云里雾里的.还有另外一本书籍是<精通Git>,是Pro Git的翻译,官网有开源书.今天看了下豆瓣的评论,前者翻译的不太好,推荐看Pro Git.今天看了Pro Git的前40页,确实非常棒,今后书籍就以这本为主了,廖老师的教程基本可以作为历史了. 其它一些资源: 1.SourceTre

Git实战指南----跟着haibiscuit学Git(第五篇)

笔名:  haibiscuit 博客园: https://www.cnblogs.com/haibiscuit/ Git地址: https://github.com/haibiscuit?tab=repositories  (欢迎star) 本项目地址: https://github.com/haibiscuit/StudyBook 尊重笔者的劳动成果,未经允许请不要转载 四:多人合作 多人合作的工作流程: 说明: (1) master(当前版本)分支是主分支,因此本地要时刻与远程同步: (2)

Git实战指南----跟着haibiscuit学Git(第十一篇)

笔名:  haibiscuit 博客园: https://www.cnblogs.com/haibiscuit/ Git地址: https://github.com/haibiscuit?tab=repositories  (欢迎star) 本项目地址: https://github.com/haibiscuit/StudyBook 尊重笔者的劳动成果,未经允许请不要转载   十:版本回退 (1) 场景一  撤销工作区文件的修改(即没有git add到暂存区) 方法一: git checkout