iT邦幫忙

2017 iT 邦幫忙鐵人賽
DAY 14
0
自我挑戰組

Git學習筆記系列 第 14

git revert 指令簡介

  • 分享至 

  • xImage
  •  

要改變目前commit的狀態

有git reset 及 git revert 兩種指令可以使用

  • reset

    • 會直接將這個分支的HEAD設定為你指定的commit,而且如果是用HARD去reset,會將該commit之後的commit都會消失
  • revert

    • 會將你指定的該次commit做反向的處理,也就是會把這個commit做過的異動,反過來做一次讓它這些異動消失
      ,這個不影響前後的commit,且revert後的版本會需要處理衝突後並且commit為一個新版,不會修改commit history

範例:

假設目前master上有一個313b3bd7ddaf3ea5b4efa95279342ab0d99789ed Bug fixed的commit要revert

我們可以下指令

​$ git revert 313b3bd
error: could not revert 313b3bd... Bug fixed
hint: after resolving the conflicts, mark the corrected paths
hint: with 'git add <paths>' or 'git rm <paths>'
hint: and commit the result with 'git commit'

如果下完revert後的結果跟我一樣

就是有衝突要合併

一樣對有衝突的檔案做衝突合併

合併完就可以利用git add , git commit來繼續revert作業

​$ git commit
[master f2b286a] Revert "Bug fixed"
 1 file changed, 3 deletions(-)

commit完的線圖如下

Imgur

接著就可以push到remote上

push 後的線圖如下

Imgur

如此一來最新的commit就會不包含我們希望revert掉的「Bug fixed」 commit

使用時機

git reset

  • 會動到commit history

  • rest我覺得像是砍掉重練,他會直接reset到指定的commit的狀態,讓你可以從這個commit開始開發

  • 實務上:我常常會用在自己解問題時加了一堆測試程式,或是log輸出,最後問題解掉時,把解掉的部分記起來,
    reset回上一個commit的版本後再將解掉問題的程式碼貼回來

git revert

  • 不會動到commit history

  • 可以抽掉不想要的commit,而不會動到其他commit上去的部分

  • 實務上:還沒使用過,不過覺得應該可以用在發現有哪一個版本是有問題的時候,將該版本從分支中revert掉

git revert 官方文件


上一篇
Git 小劇場 git stash part 2
下一篇
git cherry-pick
系列文
Git學習筆記31
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言