您的位置:

gitreflog

一、gitreflog基本介绍

gitreflog,是git所提供的一种非常有用的命令,用来查看本地仓库的所有提交历史,包括HEAD的所有修改记录(无论是否提交到远程仓库),可以用于查询某个分支上的提交历史及其commit id,也可以复原删除的分支或commit等,具有非常实用的功能。

二、gitreflog常见用法

1、使用gitreflog查看远程仓库删除历史:

$ git reflog show origin/master

2、使用gitreflog查看本地仓库所有分支修改记录:

$ git reflog

3、使用gitreflog查看某个分支的修改历史:

$ git reflog show 

  

4、使用gitreflog复原删除分支:

$ git branch  
   

   
  

这里的 就是在reflog里找到被删除分支的sha1。

三、gitreflog常见问题解决

1、使用gitreflog时,某些没有提交到远程的commit记录不见了怎么办?

这种情况一般是由于git在默认情况下只保留30天的commit记录,如果希望保留更久的记录,可以使用git reflog expire命令进行设置,例如:

$ git reflog expire --expire-unreachable=now --all

设置以后,之前30天的历史记录都将被保留,git将不会再自动清除这些记录了。

2、使用git reflog show命令时,如何筛选某个时间段的记录?

使用--since和--until参数,可以指定时间段来筛选记录,例如:

$ git reflog show --since='2018-01-20' --until='2018-01-25'

四、gitreflog高级用法

1、使用git reflog和git cherry-pick命令实现“回档”操作:

使用git cherry-pick命令,可以将某次提交修改应用到当前分支中。如果我们需要回档到某个旧版本,一般可以使用以下命令:

$ git reflog
$ git cherry-pick 

  

2、使用git reflog和git reset命令实现“撤销”操作:

当我们在某个分支上提交了一些修改,发现某个修改有问题,需要撤销时,可以使用以下命令:

$ git reflog
$ git reset HEAD@{n}

n是git reflog中的序号,如果恢复的commit非常旧,那么可能需要使用强制更新的git reset命令:

$ git reset --hard HEAD@{n}

五、小结

通过以上的详细阐述,我们已经了解到了gitreflog的基本介绍,常见用法以及常见问题解决和高级用法。我们可以看到,gitreflog的功能非常强大,可以用于查询某个分支上的提交历史及其commit id,并且可以复原删除的分支或commit等。在开发过程中,合理使用gitreflog命令,可以帮助我们更精确地定位问题,提高开发效率。