git 如何比較不同分支的差異
阿新 • • 發佈:2020-09-06
前兩天,良許在做整合的時候碰到了一件鬧心事。事情是這樣的,良許的一位同事不小心把一個錯誤的 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: