专栏首页逸鹏说道[git]撤销的相关命令:reset、revert、checkout

[git]撤销的相关命令:reset、revert、checkout

基本概念

  1. 工作区
  2. 暂存区
  3. 本地版本仓库
  4. 远程版本仓库

如果不清晰上面的四个概念,请查看廖老师的git教程

这里我多说几句:最开始我使用git的时候,我并不明白我为什么写完代码要用git的一些列指令把我的修改 存起来。后来用多了,也就明白了为什么。git是一个“版本管理工具”,大家在写东西的时候都用过“回撤” 这个功能,但是回撤只能回撤几步,假如想要找回我三天之前的修改,光用“回撤”是找不回来的。而“版本管理工具” 就是记录每次的修改,只要提交到版本仓库,你就可以找到之前任何时刻的状态(文本状态)。

当然,上面我只说了一部分git的好处,只为后面的东西作为铺垫。因为,后面会说到三个关于git上面如何“反悔”、 “回到任意时候的代码”,其实就是上面说的原始的“回撤”升级版,版本管理工具的“回撤”。

checkout、reset、revert这三个指令

  • checkout:清空工作区的修改
    • 清空工作区的修改git checkout changed_file,清空所有工作区的修改git checkout .
    • 切换分支git checkout branch_name(在切换分支之前,需要清空工作区,提交到本地版本仓库或者移除工作区的东西)
    • 快速查看某个版本的代码git checkout commit_id/HEAD~last_version_num,切换到一个临时分支,内容就是指定的版本内容
  • reset:撤销某次提交(commit),并把这次提交的所有修改放到工作区
    • git reset HEAD~last_version_num/commit_id,注意:这个操作修改历史,所以push到 远程仓库会出现问题,可以通过-f参数,实现强制推送。
  • revert:回到之前的某个版本的状态,并创建一个新的提交。
    • git revert HEAD~last_version_num/commit_id,创建一个新的commit,该内容为指定的 版本的内容,注意:这个操作并不会重写历史,也就是原来的commit还是存在的。

git reset 和git revert的区别: git revert是用一次新的commit来回滚之前的commit,git reset是直接删除指定的commit。 git reset 是把HEAD向后移动了一下,而git revert是HEAD继续前进

在回滚这一操作上看,虽然效果差不多,但是日后继续merge以前的老版本时有区别。因为git revert是用一次逆向的commit“中和”之前的提交,因此日后合并老的branch时,导致这部分改变不会再次出现,但是git reset是之间把某些commit在某个branch上删除,因而和老的branch再次merge时,这些被回滚的commit应该还会被引入。

本文分享自微信公众号 - 我为Net狂(dotNetCrazy),作者:削微寒

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2016-08-02

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Git Base For Linux

    GitHub实战系列汇总:http://www.cnblogs.com/dunitian/p/5038719.html

    逸鹏
  • Git Base For Linux

    GitHub实战系列汇总:http://www.cnblogs.com/dunitian/p/5038719.html

    逸鹏
  • GitHub实战系列~4.把github里面的库克隆到指定目录+日常使用 2015-12-11

    GitHub实战系列汇总:http://www.cnblogs.com/dunitian/p/5038719.html ————————————————————...

    逸鹏
  • GitHub简明操作指南

    GitHub的是版本控制和协作代码托管平台。它可以让你和其他人的项目从任何地方合作。Git也是目前世界上最先进的分布式版本控制系统(没有之一)。最初编写用作Li...

    伏草惟存
  • 上传本地代码及更新代码到GitHub教程

    转自 :https://www.cnblogs.com/zlxbky/p/7727895.html

    用户1518699
  • Git 最常用命令

    wsuo
  • Git 实用命令小抄

    如果你觉得 git 很迷惑人,那么这份小抄正是为你准备的!请注意我有意跳过了 git commit、git pull/push 之类的基本命令,这份小抄的主题是...

    KEN DO EVERTHING
  • Git使用总结

    Git(读音为/gɪt/)是一个开源的分布式版本控制系统,可以有效、高速地处理从很小到非常大的项目版本管理。

    轩辕小子
  • Github删除某个文件的所有提交记录

    Cannot rewrite branches: You have unstaged changes.

    Java那些事儿
  • 硬核!IDEA 中使用 Git 完整入门教程!

    建议: 这个是选择行结束符, windows与linux行结束符不一致; 建议选择第一个, 这样git会自动转换;

    江南一点雨

扫码关注云+社区

领取腾讯云代金券