我有一个名为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中生成?
答案 0 :(得分:0)
要恢复用户在master
分支上的合并提交,您可以使用以下步骤:
使用任何belwo命令将提交历史显示为图形,然后由用户在主分支上查找合并提交。
gitk --all
git log --oneline --decorate --graph --all
master
分支假设提交历史如下所示。 F2
分支上的提交F4
和feature
由用户提交,T3
分支上的提交T4
和tempmaster
是合并提交用户将feature
分支合并到tempmaster
,M2
分支上的提交M3
和master
由用户合并。
…---M1---M2------…-----M3---… master
/ /
…---T1---T2---T3-----…------T4 ---… tempmaster
/ / /
…-----F1---F2---…---F3---F4---… feature
因此,您应该在主分支上恢复提交M2
和M3
。
首先按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'
。
然后通过M2
在master
分支上恢复旧的合并提交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
恢复。