TOC
Write By CS逍遥剑仙 我的主页: www.csxiaoyao.com GitHub: github.com/csxiaoyaojianxian Email: sunjianfeng@csxiaoyao.com
版本控制是基于 commit 的操作,因此历史记录的查询是版本控制的基础。
版本的前进后退本质是 HEAD 指针的移动,有三种移动指针进行版本控制的方式:索引、^
、~
。
HEAD
表示当前版本 (提交ID),上个版本是 HEAD^
,上上个版本是 HEAD^^
,上100个版本是 HEAD~100
。
同时 reset 命令有三个参数,对应三个恢复等级:--soft
、--mixed
、--hard
。
本地库移动 HEAD 指针,暂存区和工作区内容不变。
如下图,使用软重置可以撤销提交记录,但保留新建的 index.js 和 style.css 文件。
本地库移动HEAD指针,重置暂存区,工作区内容不变。
本地库移动HEAD指针,重置暂存区,重置工作区。
如下图,硬重置不保留已提交的修改,直接将当前分支的状态恢复到某个特定提交下,同时将当前工作区和暂存区中的文件全部移除。
reset 适用于本地库中的版本控制,然而远程分支只能使用 revert 在不修改分支历史的前提下,还原某次提交引入的更改,并创建一个包含已还原更改的新提交记录。
如下图,ec5be 上添加了 index.js 文件,后来发现多余了,可以执行 revert 指令还原之前的更改。
checkout 除了用于分支切换,使用 --
还可以用于版本控制,丢弃指定文件在工作区的全部修改,恢复文件到最后一次 commit 的状态(丢失最后一次 commit 后工作区修改的内容)。
标签也是版本库的一个快照,拥有让人容易记住的名字,同时也是指向某个 commit 的指针,但是分支指针可以移动,标签指针不能移动。
此时回到了场景1,可以选择直接丢弃或修改重新添加。
等同于 场景2.1 + 场景1。
注意:工作区 rm 文件后需要执行
git rm [file name]
删除对应的追踪并 commit
参考:
https://dev.to/lydiahallie/cs-visualized-useful-git-commands-37p1
https://dev.to/maxpou/git-cheat-sheet-advanced-3a17
https://gitee.com/liaoxuefeng/learn-java/raw/master/teach/git-cheatsheet.pdf
https://juejin.im/post/5e9e49356fb9a03c917fe7fd
https://www.liaoxuefeng.com/wiki/896043488029600
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。