我使用提交消息“Build 0051”将一些源代码检查到 GIT 中。
但是,我似乎再也找不到那个源代码了——如何使用命令行从 GIT 存储库中提取这个源代码?
更新
源代码肯定在那里,现在只需检查一下即可:
C:\Source>git log -g --grep="0052" commit 77b1f718d19e5cf46e2fab8405a9a0859c9c2889 Reflog: HEAD@{10} (unknown <Mike@.(none)>) Reflog message: commit: 20110819 - 1724 - GL: Intermediate version. File version: v0.5.0 build 0052. Author: unknown <Mike@.(none)> Date: Fri Aug 19 17:24:51 2011 +0100 20110819 - 1724 - GL: Intermediate version. File version: v0.5.0 build 0052. C:\Source>
要搜索给定文本的提交日志(跨所有分支):
git log --all --grep='Build 0051'
要通过 repo 的历史搜索提交的实际内容,请使用:
git grep 'Build 0051' $(git rev-list --all)
显示给定文本的所有实例、包含文件名和提交 sha1。
最后,作为最后的手段,以防您的提交悬空并且根本没有连接到历史记录,您可以使用-g标志搜索 reflog 本身(简称--walk-reflogs:
-g
--walk-reflogs
git log -g --grep='Build 0051'
编辑:如果您似乎丢失了历史记录,请检查reflog作为您的安全网。在列出的提交之一中查找 Build 0051
reflog
git reflog
您可能只是将您设置HEAD为历史的一部分,其中“构建 0051”提交不可见,或者您实际上可能已经把它吹走了。git-ready reflog文章 可能会有所帮助。
HEAD
要从 reflog 中恢复您的提交 :对您找到的提交执行 git checkout(并可选择创建一个新的分支或标记以供参考)
git checkout 77b1f718d19e5cf46e2fab8405a9a0859c9c2889 # alternative, using reflog (see git-ready link provided) # git checkout HEAD@{10} git checkout -b build_0051 # make a new branch with the build_0051 as the tip