• git reset到提交前的状态


    有时候,我们用Git的时候有可能commit提交代码后,发现这一次commit的内容是有错误的,那么有两种处理方法:
    1、修改错误内容,再次commit一次
    2、使用git reset 命令撤销这一次错误的commit
    第一种方法比较直接,但会多次一次commit记录,错误的commit其实没必要保留下来。

    前提知识--Git的基本流程和Git reset的三种模式

    实战

    好比你的需求(把某字段的注释从“排序“改为了”弹窗顺序“)完成了,你commit后已经push到远程了。

     提交历史

    我们先来讨论几种场景:
    (1) 你在合并到dev分支进行测试的时候发现有bug。
    (2) 产品说这个需求不做了。
    (3) 当前分支还有之前的需求push了,但没有合到远程master分支去部署,然而你这次开发的需求又push到同一个分支了,产品要求先把上个需求先上了。

    Reset步骤

    现在想要回退到修改字段注释前,即字段的注释为“顺序“时,我们可以先Reset到上一个提交,即图中的【修改】提交历史处。

     点击后会出现弹窗让你选择Reset的模式,假如场景是(2)产品说这次的需求不需要了,也就是放弃目前本地的所有改变,那么我们可以选择hard的模式。

     选择Hard的操作,等价于命令行 git reset --hard HEAD~1  ,后面1,表示我已经commit1次了,这次不想要了, 如果2次,就写2。

     代码会恢复到这次修改前

     同时发现Git的Log里面你的提交历史也重置回去了

     如果你已经push过,那么这时我们需要强制提交到当前分支的远程分支,也就是直接覆盖掉远程这次需求提交的代码。

     

     此操作等价于命令 git push -f origin 分支名字

    如果你不强制提交到远程的话,那么当你update的时候会和你之前提交的“弹窗顺序“产生冲突。

     如果你的场景是(3)想要先stash,把之前的写的需求先部署,后面再unstash回来修改这次的需求,没问题后再上线,那么你可以选择Soft Reset。

    等价于命令行 git reset --soft HEAD~1

     那么就会回到你commit前的状态(保留你的暂存区和工作目录)

     这时你可以直接修改代码后,再commit再强制push,或者直接stash,再强制push,回到上一次没有修改代码提交前,也就是回到注释是“排序“的时候

  • 相关阅读:
    .NET设计模式系列文章[转]
    asp.net MVC+NHibernate项目开发日志
    NHibernate 中关于 unsavedvalue 的问题
    领域驱动设计DDD之读书笔记
    让人郁闷的“DesktopCompatible”
    实战DDD(DomainDriven Design)领域驱动设计
    手机软件开发中的P/Invoke
    如何配置NHibernate的XML配置文件的智能感知(IntelliSense)功能 ?
    转]WinCE中的未公开函数
    Nhibernate+MVC开发日志
  • 原文地址:https://www.cnblogs.com/liaowenhui/p/16779706.html
Copyright © 2020-2023  润新知