相关疑难解决方法(0)

如何在git历史中grep(搜索)已提交的代码?

我过去的某个时候删除了文件或某些代码.我可以在内容中进行grep(不在提交消息中)吗?

一个非常糟糕的解决方案是grep日志:

git log -p | grep <pattern>
Run Code Online (Sandbox Code Playgroud)

但是,这不会立即返回提交哈希.我一直玩得git grep无济于事.

git diff grep

1342
推荐指数
10
解决办法
36万
查看次数

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

我使用提交消息"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>
Run Code Online (Sandbox Code Playgroud)

更新

使用以下内容检索丢失的源代码:

C:\Source>git log -g --grep="0052"
commit 77b1f718d19e5cf46e2fab8405a9a0859c9c2889
Reflog: HEAD@{10} (unknown <Mike@.(none)>)
Reflog message: commit: 20110819 - 1724 - GL: …
Run Code Online (Sandbox Code Playgroud)

git git-log

761
推荐指数
10
解决办法
34万
查看次数

搜索所有Git历史记录中的字符串?

我有一个代码库,我想将其作为开源推送到GitHub.在这个git控制的源代码树中,我有一些包含密码的配置文件.我确保不跟踪此文件,我也将其添加到.gitignore文件中.但是,我希望绝对肯定的是,没有任何敏感信息会被推送,也许是因为某些事情在提交之间滑落了.我怀疑我做得不够粗心,但我想要积极.

有没有办法"grep"所有的git?我知道这听起来很奇怪,但是"全部"我想我的意思是每个版本的文件都是.我想如果有一个命令为每次提交转储diff文件,那可能有用吗?

git

704
推荐指数
3
解决办法
22万
查看次数

如何找到在任何分支中引入字符串的Git提交?

我希望能够找到任何分支中任何提交中引入的某个字符串,我该怎么做?我找到了一些东西(我为Win32修改过),但git whatchanged似乎没有查看不同的分支(忽略py3k块,它只是一个msys/win换行修复)

git whatchanged -- <file> | \
grep "^commit " | \
python -c "exec(\"import sys,msvcrt,os\nmsvcrt.setmode(sys.stdout.fileno(), os.O_BINARY)\nfor l in sys.stdin: print(l.split()[1])\")" | \
xargs -i% git show origin % -- <file>
Run Code Online (Sandbox Code Playgroud)

如果您的解决方案很慢,这并不重要.

git search

367
推荐指数
7
解决办法
8万
查看次数

从Git历史记录中删除敏感文件及其提交

我想在GitHub上放置一个Git项目,但它包含某些带有敏感数据的文件(用户名和密码,比如/ config/deploy.rb for capistrano).

我知道我可以将这些文件名添加到.gitignore,但这不会删除他们在Git中的历史记录.

我也不想通过删除/.git目录重新开始.

有没有办法删除Git历史记录中特定文件的所有痕迹?

git git-filter-branch git-commit git-rewrite-history

330
推荐指数
9
解决办法
10万
查看次数

如何在存储库中搜索特定字符串的所有Git和Mercurial提交?

我有一个Git存储库,有很少的分支和悬挂提交.我想在存储库中搜索所有此类提交以获取特定字符串.

我知道如何记录历史上所有提交的日志,但这些不包括分支或悬空blob,只是HEAD的历史记录.我希望得到所有这些,找到一个错位的特定提交.

我也想知道如何在Mercurial中做到这一点,因为我正在考虑转换.

git mercurial

287
推荐指数
6
解决办法
13万
查看次数

删除冒号前的所有文本

我有一个包含一定数量行的文件.每一行看起来像这样:

TF_list_to_test10004/Nus_k0.345_t0.1_e0.1.adj:PKMYT1
Run Code Online (Sandbox Code Playgroud)

我想删除所有":"之前的字符,以便仅保留作为基因名称的PKMYT1.由于我不是正则表达式脚本编写的专家,任何人都可以帮助我使用Unix(sed或awk)或R?

unix awk replace r sed

42
推荐指数
7
解决办法
6万
查看次数

用于查找在git分支上创建的所有TODO注释的脚本?

我有一个功能分支,它已经变得非常大.在我们的代码中有很多挥之不去的TODO注释,但是我想在尚未合并到master中的提交中找到添加到代码中(并且尚未删除)的所有TODO.我怎么能这样做?

git

12
推荐指数
3
解决办法
798
查看次数

仅限git grep文件名

我想只查看在文本中有特定单词的不同文件.

current_directory$ git grep 'word'
Run Code Online (Sandbox Code Playgroud)

显示具有匹配单词的文件的每一行

所以我尝试了这个

current_directory$ git grep 'word' -- files-with-matches
current_directory$ git grep 'word' -- name-only
Run Code Online (Sandbox Code Playgroud)

但它没有显示任何输出.

此外,有人可以告诉我如何计算所有文件中'word'的总出现次数.

任何帮助将不胜感激:)

git grep

8
推荐指数
2
解决办法
4233
查看次数

如何验证从git存储库中删除敏感数据?

以下资源描述了如何从git存储库中删除敏感数据.

之后,我如何仔细检查顽皮位是否真的消失了,搜索存储库中的所有blob(被引用,垃圾,打包,松散还是其他)来验证违规模式是否已被完全破坏?

使用裸存储库与使用工作树的存储库时,答案是否会发生变化?

git

6
推荐指数
1
解决办法
694
查看次数