1. 程式人生 > >git 如何比較不同分支的差異

git 如何比較不同分支的差異

前兩天,良許在做整合的時候碰到了一件鬧心事。事情是這樣的,良許的一位同事不小心把一個錯誤的 dev 分支 merge 到了 master 分支上,導致了良許編譯不通過。於是,我們需要將版本回退到 merge 之前的狀態。 如果是下面這個狀態,那很好處理: ![](https://img2020.cnblogs.com/other/1218435/202009/1218435-20200905220317879-152925682.jpg) 這種情況下,我們只需一個 `git reset` 命令即可: ``` git reset --hard HEAD~ ``` 但是,如果下面這種狀態,情況就沒那麼簡單了: ![](https://img2020.cnblogs.com/other/1218435/202009/1218435-20200905220350133-2139809618.jpg) 這種情況下,就不能簡單使用 `git reset` 命令了。這就是良許這次碰到的問題。為了解決這個問題,我們就需要找出合併後的分支與合併前的分支的差異,再進行版本回退。這種情況下的版本回退,就不能單用 `git reset` 了,而是要配合 `git revert` 了,在後面我們將詳細介紹如何優雅的進行版本回退。 回到正題,我們如何找出合併後的分支與合併前分支的差異呢?這裡我們需要使用到 `git log` 命令了。我們先模擬出這兩個分支的提交情況: - dev 分支提交情況: ``` [alvin@VM_0_16_centos git-log]$ git log dev commit b191410906ae20a865fde3f163bb01fd6cfc1f11 Author: