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分支,這時候才發現出了問題...