通过合并主人

时间:2017-10-18 10:35:27

标签: git merge version-control

我有一个名为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 个答案:

答案 0 :(得分:0)

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

1。查找哪些提交由用户

合并到主分支中

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

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

2。在master分支

上将找到的提交从新旧恢复

假设提交历史如下所示。 F2分支上的提交F4feature由用户提交,T3分支上的提交T4tempmaster是合并提交用户将feature分支合并到tempmasterM2分支上的提交M3master由用户合并。

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

因此,您应该在主分支上恢复提交M2M3

首先按M3还原较新的提交git revert -m 1 <commit id for M3>-m 1选项表示保留第一个父项的更改,并从T4分支上的第二个父项(commit master)恢复更改。然后提交历史将是:

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

现在T4引入的更改已在主分支上恢复为提交M3'

然后通过M2master分支上恢复旧的合并提交git revert -m 1 <commit id for M2>。提交历史记录将是:

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

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