20.高级 10:branch 删过了才想起来有用?
高级 10:branch 删过了才想起来有用?
branch
用完就删是好习惯,但有的时候,不小心手残删了一个还有用的 branch
,或者把一个 branch
删掉了才想起来它还有用,怎么办?
reflog :引用的 log
reflog
是 “reference log” 的缩写,使用它可以查看 Git 仓库中的引用的移动记录。如果不指定引用,它会显示 HEAD
的移动记录。假如你误删了 branch1
这个 branch
,那么你可以查看一下 HEAD
的移动历史:
git reflog
从图中可以看出,HEAD
的最后一次移动行为是「从 branch1
移动到 master
」。而在这之后,branch1
就被删除了。所以它之前的那个 commit
就是 branch1
被删除之前的位置了,也就是第二行的 c08de9a
。
所以现在就可以切换回 c08de9a
,然后重新创建 branch1
:
git checkout c08de9a
git checkout -b branch1
这样,你刚删除的 branch1
就找回来了。
注意:不再被引用直接或间接指向的
commit
s 会在一定时间后被 Git 回收,所以使用reflog
来找回删除的branch
的操作一定要及时,不然有可能会由于commit
被回收而再也找不回来。
查看其他引用的 reflog
reflog
默认查看 HEAD
的移动历史,除此之外,也可以手动加上名称来查看其他引用的移动历史,例如某个 branch
:
git reflog master