zoukankan      html  css  js  c++  java
  • Git 撤销修改

    增补提交

      git commit –C HEAD –a --amend

      -C表示复用指定提交的提交留言,这个例子中是HEAD,实际上可以指定其他有效的提交名称。

      如果参数是小写的-c,就会打开预先设置好的编辑器,以便在已有的提交留言基础上编辑修改。

      增补提交只能针对最后一个提交,如果想更正好几个提交之前的某个错误,则须使用git revert这个命令。

    反转提交

      反转已经提交的改动,使用git revert命令,此命令通过在版本库中创建一个“反向的”新提交来抵消原来提交的改动

      通常Git会立即提交反转结果,但是也可以通过参数-n告诉Git先不要提交,这用于反转多个提交非常有用,运行多个git revert –n命令,Git会暂存所有的变更,然后做一次性提交。

      做反转操作的时候必须提供提交名称,反转总是按照从新到旧点的倒序来操作的,即最后的提交最先反转,这样可以避免一些不必要的冲突。

    复位

      命令git reset可以在复位版本库后,暂存工作目录树中因复位产生的与版本库的差异,以便提交。

      这对于在之前的提交中发现错误并需要更改时非常有用。

      这是通过--soft选项实现的,它使得Git暂存所有的因复位带来的差异,但不提交它。之后,用户可以修改这些内容再提交,或者干脆扔掉这些内容。

      选项--hard要小心使用,该选项会从版本库和工作目录树中同时删除提交,--hard就好像版本库中的删除键,并且不可恢复。

      git reset是以提交名称作为参数的,默认值是HEAD,可以用^~作为提交名称的修饰符来指定某个版本。

      HEAD^是指把版本库复位到当前HEAD之前的那个节点上,把HEAD这个版本的修改扔到工作目录树中,

      540ecb7~3是指要复位到540ecb7之前的三个节点上,即把该提交和之前的两个提交(共三个提交)扔到工作目录树中。

      git reset --hard HEAD^ 强制复位前一个提交。

      git reset HEAD可以用来清除已经add到缓存区但是不想进一步提交的内容。

      另一种方式是用git rm --cached,选项--cached表明是清除缓存区,然后不动工作目录树。

      注意git checkout filename将会删除该文件中所有没有暂存和提交的改动,这个操作是不可逆的。

    参考资料

      《版本控制之道——使用Git》(Pragmatic Version Control Using Git)

      Git分支管理策略:http://www.ruanyifeng.com/blog/2012/07/git.html

      Git Reference: http://gitref.org/

  • 相关阅读:
    SQL 存储过程入门(五)
    QT程序崩溃原因示例和分析
    全志(allwinner)编译过程问题与解决方法汇总
    rust Linux环境下开发环境安装 和 IDE工具 EMACS配置
    DMZ
    什么是浮动IP
    PLMN和PSTN
    人生 -- 有感于近期的一个事件
    职场四原则
    Fatal error compiling: java.lang.NoSuc hFieldError??
  • 原文地址:https://www.cnblogs.com/smile361/p/3714118.html
Copyright © 2011-2022 走看看