簡體   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