1. 程式人生 > >git刪除中途某一次commit

git刪除中途某一次commit

客服二期專案進入尾聲了,週六測試人員反映某個模組介面有變,看了下,發現同事把下一期的提交放入了版本庫了。當初太忙,沒顧得上,只是說這期上線就上我這邊的。今天抽空在網上找了下git相關資料,看能不能把程式碼庫中的某個commit給刪掉,找了相關資料,沒有直接的方法,但是有曲線方法,就是要繞一下,下面就介紹下。

由於二期都是我開發的,只是中途有一個同事的commit,而且慶幸的是,沒有涉及到我改的程式碼,那麼接下來就好辦了。

  1. 資料無價,新建個分支[git checkout -b patch],操作都在新分支來
  2. 檢視歷史記錄[git log –oneline],發現自同事commit後我也提交了六個commit
  3. 打patch,自同事的那個commit到最後一個commit共七個[git format-patch -7,會生成七個patch,如 0001-.patch … 0007-.patch,其中0001-.patch為同事的那個patch]
  4. 回退到同事的那個commit之前的commit[git reset –hard commit-id]
  5. 把除了同事patch外的其他patch都應用上 [git am *.patch,事先把0001-.patch移到別處]
  6. 本次上線後,就可以把同事的那個patch給打上 [git am 0001-.patch]

說了幾點,歸納起來,就是打補丁,把同事的那個補丁剔除,打上我的補丁就行了