繁体   English   中英

还原通过合并母版中的某个分支进行的提交

[英]Revert commits made by merging of a certain branch in master

我有一个名为tempMaster的分支,我的团队不断将在tempmaster分支上更改的功能分支合并,然后将此tempmaster合并到master。但是我发现某个用户无意中将其功能分支合并到tempmaster中,然后他也将其合并了tempmaster和master。 用户在tempmaster中进行了多次合并,然后将tempmaster合并为master。 我需要恢复通过将他的功能分支合并到tempmaster,然后将tempmaster合并到master中所做的更改。

我可以通过以下命令查看历史记录

git log --author=imran.zafar@bharatconnect.com --pretty=one --since=30.days

但这仅向我显示了用户在过去一个月中所做的提交,但我不确定他何时首次合并其功能分支。是否有任何git命令可用来还原由合并此功能分支到主人?

要还原用户在master分支上的合并提交,可以使用以下步骤:

1.查找用户将哪些提交合并到master分支中

使用任何belwo命令将提交历史记录显示为图形,然后由用户在master分支上找到合并的提交。

gitk --all
git log --oneline --decorate --graph --all

2.在master分支上将找到的提交从新还原为旧

假定提交历史如下garph。 feature分支上的提交F2F4由用户提交, tempmaster分支上的提交T3T4是用户将feature分支合并到tempmaster中的合并提交,用户master分支上的提交M2M3由用户合并。

       …---M1---M2------…-----M3---…    master
               /             /
…---T1---T2---T3-----…------T4 ---…     tempmaster
        /    /             /
…-----F1---F2---…---F3---F4---…         feature   

因此,您应该还原master分支上的提交M2M3

首先通过git revert -m 1 <commit id for M3>还原较新的提交M3 -m 1选项意味着保留master分支上的第一个父级的更改并恢复第二个父级的更改(commit T4 )。 那么提交历史将是:

       …---M1---M2------…-----M3---…---M3'    master
               /             /
…---T1---T2---T3-----…------T4 ---…          tempmaster
        /    /             /
…-----F1---F2---…---F3---F4---…              feature   

现在, T4引入的更改已还原为master分支上的commit M3'

然后通过git revert -m 1 <commit id for M2> master分支上较旧的合并提交M2 提交历史将是:

       …---M1---M2------…-----M3---…---M3'---M2'    master
               /             /
…---T1---T2---T3-----…------T4 ---…          tempmaster
        /    /             /
…-----F1---F2---…---F3---F4---…              feature   

T3引入的更改已通过master分支上的提交M2'恢复。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM