前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >git学习总结02 — 版本控制

git学习总结02 — 版本控制

原创
作者头像
CS逍遥剑仙
发布2020-05-30 11:56:15
9530
发布2020-05-30 11:56:15
举报
文章被收录于专栏:禅林阆苑禅林阆苑

git学习总结02 — 版本控制

TOC

Write By CS逍遥剑仙 我的主页: www.csxiaoyao.com GitHub: github.com/csxiaoyaojianxian Email: sunjianfeng@csxiaoyao.com

1. 历史记录查询 log & reflog

版本控制是基于 commit 的操作,因此历史记录的查询是版本控制的基础。

2. 本地库版本管理 reset

2.1 reset 操作 HEAD 指针的三种方式

版本的前进后退本质是 HEAD 指针的移动,有三种移动指针进行版本控制的方式:索引、^~

HEAD 表示当前版本 (提交ID),上个版本是 HEAD^,上上个版本是 HEAD^^,上100个版本是 HEAD~100

同时 reset 命令有三个参数,对应三个恢复等级:--soft--mixed--hard

2.2 --soft

本地库移动 HEAD 指针,暂存区工作区内容不变。

如下图,使用软重置可以撤销提交记录,但保留新建的 index.js 和 style.css 文件。

2.3 --mixed (默认)

本地库移动HEAD指针,重置暂存区,工作区内容不变。

2.4 --hard (常用)

本地库移动HEAD指针,重置暂存区,重置工作区。

如下图,硬重置不保留已提交的修改,直接将当前分支的状态恢复到某个特定提交下,同时将当前工作区和暂存区中的文件全部移除。

3. 远程版本还原 revert

reset 适用于本地库中的版本控制,然而远程分支只能使用 revert 在不修改分支历史的前提下,还原某次提交引入的更改,并创建一个包含已还原更改的新提交记录。

如下图,ec5be 上添加了 index.js 文件,后来发现多余了,可以执行 revert 指令还原之前的更改。

4. 工作区修改丢弃 checkout (特殊)

checkout 除了用于分支切换,使用 -- 还可以用于版本控制,丢弃指定文件在工作区的全部修改,恢复文件到最后一次 commit 的状态(丢失最后一次 commit 后工作区修改的内容)。

5. 标签管理 tag

标签也是版本库的一个快照,拥有让人容易记住的名字,同时也是指向某个 commit 的指针,但是分支指针可以移动,标签指针不能移动。

  • 创建标签
  • 查看所有标签
  • 标签推送
  • 标签删除

6. 常见场景操作

  • 场景1:工作区某文件内容改错,想直接丢弃工作区的修改时:
  • 场景2.1:改错的文件添加到了暂存区,未提交版本库,想清除暂存区的修改,重新放回工作区时:

此时回到了场景1,可以选择直接丢弃或修改重新添加。

  • 场景2.2:改错的文件添加到了暂存区,未提交版本库,想直接清除本地所有修改时:

等同于 场景2.1 + 场景1

  • 场景3.1:改错的文件已提交版本库,但未提交远程库,想撤销上次提交,重新放回工作区时:
  • 场景3.2:改错的文件已提交版本库,但未提交远程库,想撤销上次提交,上次提交内容直接丢弃时:
  • 场景4:工作区删除文件,想找回时:

注意:工作区 rm 文件后需要执行 git rm [file name] 删除对应的追踪并 commit

  • 场景5:还原远程分支
  • 场景6:清理一团糟的本地仓库

参考:

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 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • git学习总结02 — 版本控制
    • 1. 历史记录查询 log & reflog
      • 2. 本地库版本管理 reset
        • 2.1 reset 操作 HEAD 指针的三种方式
        • 2.2 --soft
        • 2.3 --mixed (默认)
        • 2.4 --hard (常用)
      • 3. 远程版本还原 revert
        • 4. 工作区修改丢弃 checkout (特殊)
          • 5. 标签管理 tag
            • 6. 常见场景操作
            领券
            问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档