一次Git撤銷錯誤的Merge

2021-08-19 03:07:21 字數 1797 閱讀 9958

title: once-git-merge-mistake-solve

date: 2018-04-20 23:37:00

tags:

2018.4.20

簡述:merge錯了乙個分支到測試分支上,發現後沒有push。要撤銷這次merge。

解決:(源於同事的友情幫助)bash 命令:

##檢查

$ git status

$ git fetch --all

##強行reset到***分支的,這一步就相當於撤銷了沒有push的merge,idea和webstorm等工具也有可選,如文後圖

簡述:

​ git分支流程: 簡單說是根據不同的任務切不同的分支,提測時將同一天要發布的所有任務分支合到發布分支上, 當發布分支上有**臨時不上時就重開乙個新的發布分支合併需要發布的那些任務分支。

​ 這次是發布分支廢除了一次,但是有其他同事的**個人分支混入了原發布分支的**,所以預期後果會造成上線一部分不需要發布的**。

​ 起初是我在用新發布分支合自己任務分支**的時候發現已經有被合了, 這肯定不對勁,就找了當時切發布分支的同事, 核對後發現他的任務分支a中已誤包含其他人的**, 這顯然是一次git使用事故了

排查解決:

剛開始用idea自帶和其他git管理工具檢視該分支提交日誌,我的思路是先排查一遍merge日誌看看有沒有直接從舊發布分支***release1***合到任務分支a的日誌, 發現並沒有。

​ 隨後檢視最近另一人的提交記錄找出合**比較晚的時間點進行排查, 如果有其他人的**, 那麼誤操作肯定發生在這之後, 這樣才能看到別人的提交日誌, 排查出時間點大概為前一天下午15:32之後, 但是並沒有排查出發生具體哪次操作,。

​ 於是我調整了一下思路, 從gitlab上檢視改動提交時的檔案改動,gitlab可以檢視某次提交時的當時所有檔案的內容.所以可以 以某個發布分支中已知檔案改動為標準篩選, 在兩次commit之間從無到有, 那麼可以判定誤操作為後一次commit, 加上之前判定的發生最早時間點前一天15:32, 抽查了其中可能的commit後在第三次就馬上找到了是前一天18:05的commit, 發現是另一同事的一次普通的常規commit(這居然是一次普通的commit而不是合** 驚了)。

​ 後來詢問該同事, 發現事故原因竟然是, 用idea切分支的時候, 還沒有完全切到另乙個分支, 同時用terminal進行了拉**, 所以最終結果就是將***release1***分支的**拉到了a任務分支本地,並且當作了一次正常的提交. 所以其實也是一次小小的併發延後問題。

​ 所以 在使用工具的時候還是要等進度條轉完再進行操作,並在每次commit的時候檢查一下,如果一次正常的commit需要提交比自己寫的**多得多的檔案改動, 那麼肯定是有問題了需要及時終止。

git撤銷錯誤合併merge

背景描述 當前master分支,小明和小王在中午12點分別新建了a b 分支 1.小明在a分支,下午1 3 5點分別提交了三個commit 2.小王在b分支,下午2 4 6點分別提交了三個commit 3.小明在a分支,在下午7點執行了git merge b,此時commit的順序是1 2 3 4 ...

Git怎樣撤銷一次分支的合併Merge

最近用git,merge之後寫的 全沒了,瞬間懵逼,找到這個解決辦法,靠譜,先記下來 如果確定放棄這次合併的提交,假如是 merge 了錯誤的分支到 master,先通過git reflog或者 gitg gitk qgit 等工具確定你 merge 之前 master 所在的 commit,然後在...

Git怎樣撤銷一次分支的合併Merge

出現的問題 某一天,所有的開發檔案已經在development分支上,但是這時候,線上出了乙個問題,需要及時修復,於是從master分支上,拉了乙個bug分支,進行處理,master分支本應合併bug分支,結果合併了dev分支,而且還commit,並推到了遠端的master分支,這時候才發現出了問題...