git——merge & revert & log filter & cherry-pick

有时候会遇到错误Merge的情况,这种情况需要使用-m参数。

             如:

$ git log

commit 414b65a80446********8281c4479f01
Merge: eb027*****3268
Author: CHNuser <user@****.com>
Date:   Wed Mar 4 14:46:27 2020 +0800

    Merge branch 'feature/v*.*.1' of http://giturl into feature/v*.*.1

这个commit错误地合并了分支,需要撤销merge:

git revert -m {1 or 2} 414b65a80446********8281c4479f01

如果要revert到第一个commit,参数选择1,如果要revert到第2个commit,选择2.

在旧代码分支中被错误了引入了新代码的情况:根据情况选择

1.利用revert撤销

2.cherry-pick重新应用相关的commit。

可以考虑按照如下步骤处理,需要利用到git-bash:

  1. 先确认准确版本的Commit信息
  2. 根据新Commit的数量决定处理策略,有以下两种方式
    1. 直接用git revert撤销相关修改
    2. 用git reset hard会到指定commit,然后使用git cherry-pick命令应用相关修改

一般来说,commit的过滤可以参考如下方式进行。

git log  --branches=*v2.0*  --since 2019-03-26  --pretty=format:"%an %h %aD %s " --reverse |grep  -i  "panpan|tiantian"

再利用cut -d “ “ -f2可取得commit number。随后可利用xargs -n 1 进行批量处理了。

panxi@**** MINGW64 /d/Projects/projectname (feature/v1.1)
$ git log --branches=*feature/v1.1_issues_p1* --since 2020-03-01 --pretty=format:"%an %h %aD %s " --reverse |grep  -i  "panpan"
CHNpanpan 6ec***1f Wed, 4 Mar 2020 12:03:40 +0800 Feature #8858
CHNpanpan eb8***ba Wed, 4 Mar 2020 14:22:41 +0800 Feature #8858
CHNpanpan cb***2b4 Wed, 4 Mar 2020 15:10:23 +0800 Feature #8858
CHNpanpan  8f***bad Wed, 4 Mar 2020 17:54:05 +0800 fix 账户充值:如果存在未完成的钱包绑定,则不允许赠送
CHNpanpan 60***250 Wed, 4 Mar 2020 17:55:01 +0800 Merge branch 'feature/v1.1_issues_p1' of http://****** into feature/v1.1_issues_p1
CHNpanpan 0e***19b Wed, 4 Mar 2020 18:47:37 +0800 代码优化
CHNpanpan d***4fc Wed, 4 Mar 2020 21:08:24 +0800 fix Feature #8858
CHNpanpan 80***c5 Fri, 6 Mar 2020 12:46:01 +0800 fix 18854
CHNpanpan c7***db Fri, 6 Mar 2020 12:47:49 +0800 Merge branch 'feature_v1.1_issues_p1_pan' into feature/v1.1_issues_p1
CHNpanpan 8a***57 Fri, 6 Mar 2020 12:48:13 +0800 Merge branch 'feature/v1.1_issues_p1' of http://****** into feature/v1.1_issues_p1
CHNpanpan 5e***08b Fri, 6 Mar 2020 19:20:42 +0800 Bug #8974
CHNpanpan 0b7***3f Mon, 9 Mar 2020 13:24:28 +0800 update es setting


panxi@**** MINGW64 /d/Projects/projectname (feature/v1.1)
$ git log --branches=*feature/v1.1_issues_p1* --since 2020-03-01 --pretty=format:"%an %h %aD %s " --reverse |grep  -i  "panpan" | cut -d " "  -f2 | xargs -n 1
6e***21f
eb***fba
cb***2b4
8f***ad
60***250
0e7***19b
d1***4fc
80***c5
c7***db
8***57
5e***8b
0***3f


$ git cherry-pick 6e***21f #如果有冲突,需要处理之后 git add && git commit
$ git push

  

原文地址:https://www.cnblogs.com/panpanwelcome/p/12448481.html