`branch`用完就刪是好習慣,但有的時候,不小心手殘刪了一個還有用的`branch`,或者把一個`branch`刪掉了才想起來它還有用,怎么辦?
## reflog :引用的 log
`reflog`是 "reference log" 的縮寫,使用它可以查看 Git 倉庫中的引用的移動記錄。如果不指定引用,它會顯示`HEAD`的移動記錄。假如你誤刪了`branch1`這個`branch`,那么你可以查看一下`HEAD`的移動歷史:
~~~
git reflog
~~~

從圖中可以看出,`HEAD`的最后一次移動行為是「從`branch1`移動到`master`」。而在這之后,`branch1`就被刪除了。所以它之前的那個`commit`就是`branch1`被刪除之前的位置了,也就是第二行的`c08de9a`。
所以現在就可以切換回`c08de9a`,然后重新創建`branch1`:
~~~css
git checkout c08de9a
git checkout -b branch1
~~~
這樣,你剛刪除的`branch1`就找回來了。
> 注意:不再被引用直接或間接指向的`commit`s 會在一定時間后被 Git 回收,所以使用`reflog`來找回刪除的`branch`的操作一定要及時,不然有可能會由于`commit`被回收而再也找不回來。
## 查看其他引用的 reflog
`reflog`默認查看`HEAD`的移動歷史,除此之外,也可以手動加上名稱來查看其他引用的移動歷史,例如某個`branch`:
~~~
git reflog master
~~~