首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何通过提交消息搜索Git存储库?

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

Stack Overflow用户
提问于 2011-08-20 00:57:46
回答 12查看 475.6K关注 0票数 1K

我用提交消息"Build 0051“将一些源代码签入到GIT中。

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

更新

使用SmartGIT.

  • Checked out 0043签入版本0043、0044、0045和0046,然后在不同的branch.

  • Checked out 0043上再次签入0051之前的版本。

  • 现在,0051具有disappeared.

更新

源代码肯定在那里,现在是检查它的问题:

代码语言:javascript
复制
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>
EN

回答 12

Stack Overflow用户

回答已采纳

发布于 2011-08-20 01:00:59

要搜索给定文本的提交日志(跨所有分支),请执行以下操作:

代码语言:javascript
复制
git log --all --grep='Build 0051'

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

代码语言:javascript
复制
git grep 'Build 0051' $(git rev-list --all)

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

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

代码语言:javascript
复制
git log -g --grep='Build 0051'

编辑:如果你似乎已经失去了你的历史,检查reflog作为你的安全网。列出的其中一个提交中查找Build 0051

代码语言:javascript
复制
git reflog

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

从reflog恢复提交:对找到的提交进行签出(并可选择为其创建一个新分支或标记以供参考)

代码语言:javascript
复制
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
票数 1.5K
EN

Stack Overflow用户

发布于 2011-08-20 01:07:08

我把这个放到我的~/.gitconfig

代码语言:javascript
复制
[alias]
    find = log --pretty=\"format:%Cgreen%H %Cblue%s\" --name-status --grep

然后,我可以输入"git find string“,然后我会得到消息中包含该字符串的所有提交的列表。例如,要查找引用标签#33的所有提交:

代码语言:javascript
复制
029a641667d6d92e16deccae7ebdeef792d8336b Added isAttachmentEditable() and isAttachmentViewable() methods. (references #33)
M       library/Dbs/Db/Row/Login.php

a1bccdcd29ed29573d2fb799e2a564b5419af2e2 Add permissions checks for attachments of custom strategies. (references #33).
M       application/controllers/AttachmentController.php

38c8db557e5ec0963a7292aef0220ad1088f518d Fix permissions. (references #33)
M       application/views/scripts/attachment/_row.phtml

041db110859e7259caeffd3fed7a3d7b18a3d564 Fix permissions. (references #33)
M       application/views/scripts/attachment/index.phtml

388df3b4faae50f8a8d8beb85750dd0aa67736ed Added getStrategy() method. (references #33)
M       library/Dbs/Db/Row/Attachment.php
票数 103
EN

Stack Overflow用户

发布于 2017-08-16 10:52:17

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

代码语言:javascript
复制
git show :/keyword(s)

这里的<keywords>可以是单个单词,也可以是由空格组成的复杂正则表达式模式,因此请确保在必要时使用引号/转义,例如:

代码语言:javascript
复制
git log -1 -p ":/a few words"

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

代码语言:javascript
复制
git show 'HEAD^{/fix nasty bug}'

请参阅:git revisions manual

票数 54
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7124914

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档