zoukankan      html  css  js  c++  java
  • 【转】Git删除commit提交的log记录

    基于 GitFlow 工作流,可能某个提交(commit)导致了 bug,或者有多个提交需要返工,此时你就会用到删除提交。
    接下来的内容都基于下面这张 git log 提交记录图来写。

     
    git log

    删除最后的提交

    当需要删除最新的提交、或最最近的几个提交。比如删除 1 或者 1~3 的提交,使用 git reset命令。
    我们需要关注一下 git reset--hard--soft 参数。
    举个例子删除最近两个提交看看:
    git reset --soft commit~3 ,然后 git status

     
    git-reset-soft

    虽然删除了最近两个提交记录,但是还保存了提交所做的更改。那么你可能也想到了 --hard就是删除提交记录并不保存所删除记录所做的更改。所以,使用--hard要注意这些更改是否真的不要保存。

    删除提交记录中间的提交

    如果想要删除的提交不是最近的记录,而是在提交记录列表中间的一个或者多个,那么我们应该如何处理呢?
    其中删除提交列表中间的 commit 又分为两种:删除中间连续的几个 commit 或者删除不连续的commit 。
    举个栗子,你可能需要删除上图中的:commit3,commit4,commit~5;不连续的提交记录为 commit3,commit5 。那么 Git 是如何处理的呢?
    ** 删除提交记录列表中间一个或连续多个的提交用 rebase,不连续的使用 cherry-pick **
    在这里我们只需要记住 rebase 就可以了。因为想要删除提交记录中间不连续的多个提交记录也可以变换为删除“提交列表中间的一个提交”,我们重复几次“提交列表中间的一个提交”的操作就可以了。所以,记住 rebase 的方法即可。

    使用 rebase

    首先贴一下我们需要用到的命令:
    git rebase --onto <branch name>~<first commit number to remove> <branch name>~<first commit to be kept> <branch name>
    接着我们来删除上图中的第二、第三个 commit:

    • git log看一下执行命令前的提交记录列表[红色部分表示即将要删除的commit]
       
      git log
    • 然后开始删除提交记录2,3[执行 rebase 时会可能遇到冲突,解决冲突不在本文描述范围]
       
      git rebase onto
    • git log看一下删除2,3 commit 之后的提交记录列表。
       
      git log
      对比一下删除提交记录前的 git log ,是不是 commit2,3 不见了呢。那么到这我们就完成任务了。



    文章来源:查看


  • 相关阅读:
    .NET 2.0 SqlDependency快速上手指南
    将VS2005中文180天试用版升级到正式版的方法
    打包,并自动安装SQL数据库
    数字签证控件网马生成器制作工具
    有人写的批处理,学习一下
    ASP.NET(C#)优秀网站
    打开,另存为,属性,打印等14个JS代码
    数据库通用连接类
    网站排名查询(Alexa中文版)
    sql中取得当前月的第一天
  • 原文地址:https://www.cnblogs.com/zqunor/p/8620335.html
Copyright © 2011-2022 走看看