如何通过提交消息搜索Git存储库?

孤者浪人 提交于 2020-01-07 04:07:31

【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>>

我使用提交消息“Build 0051”检查了一些源代码到GIT中。

但是,我似乎无法再找到源代码 - 如何使用命令行从GIT存储库中提取此源代码?

更新

  1. 使用SmartGIT检查版本0043,0044,0045和0046。
  2. 检出0043,并检查其他分支上的版本0051。
  3. 再次检查0043。
  4. 现在,0051已经消失了。

更新

源代码肯定存在,现在需要检查它:

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>

#1楼

虽然有点晚,但是:/是基于提交消息指定提交(或修订)的专用符号,只需在搜索字符串前加上:/ ,例如:

git show :/message

这里的<message>可以是由空格组成的复杂正则表达式模式,因此请务必在必要时引用/转义,例如:

git log -1 -p ":/a few words"

或者,可以指定起始点,以查找从特定点可到达的最近提交,例如:

git show 'HEAD^{/fix nasty bug}'

请参阅: git修订手册


#2楼

首先使用git log --oneline查找提交的SHA(Message),然后我使用git log --stat 8zad24d和SHA(第一对情侣sha char示例(8zad24d))来查找正确的信息


#3楼

试试这个!

git log | grep -b3 "Build 0051"

#4楼

要搜索给定文本的提交日志(跨所有分支):

git log --all --grep='Build 0051'

要通过回购历史记录搜索提交的实际内容,请使用:

git grep 'Build 0051' $(git rev-list --all)

显示给定文本的所有实例,包含文件名和提交sha1。

最后,作为最后的手段,如果您的提交悬空并且根本没有连接到历史记录,您可以使用-g标志搜索reflog本身( --walk-reflogs

git log -g --grep='Build 0051'

编辑:如果您似乎丢失了历史记录,请将reflog作为您的安全网。 在列出的其中一个提交中查找Build 0051

git reflog

您可能只是将HEAD设置为历史记录的一部分,其中“Build 0051”提交不可见,或者您可能实际上将其吹走了。 git-ready reflog文章可能会有所帮助。

要从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

#5楼

git log --grep=<pattern>
            Limit the commits output to ones with log message that matches the
            specified pattern (regular expression).
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!