我过去的某个时候删除了文件或某些代码.我可以在内容中进行grep(不在提交消息中)吗?
一个非常糟糕的解决方案是grep日志:
git log -p | grep <pattern>
Run Code Online (Sandbox Code Playgroud)
但是,这不会立即返回提交哈希.我一直玩得git grep无济于事.
我使用提交消息"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>
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) 我有一个代码库,我想将其作为开源推送到GitHub.在这个git控制的源代码树中,我有一些包含密码的配置文件.我确保不跟踪此文件,我也将其添加到.gitignore文件中.但是,我希望绝对肯定的是,没有任何敏感信息会被推送,也许是因为某些事情在提交之间滑落了.我怀疑我做得不够粗心,但我想要积极.
有没有办法"grep"所有的git?我知道这听起来很奇怪,但是"全部"我想我的意思是每个版本的文件都是.我想如果有一个命令为每次提交转储diff文件,那可能有用吗?
我希望能够找到任何分支中任何提交中引入的某个字符串,我该怎么做?我找到了一些东西(我为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)
如果您的解决方案很慢,这并不重要.
我想在GitHub上放置一个Git项目,但它包含某些带有敏感数据的文件(用户名和密码,比如/ config/deploy.rb for capistrano).
我知道我可以将这些文件名添加到.gitignore,但这不会删除他们在Git中的历史记录.
我也不想通过删除/.git目录重新开始.
有没有办法删除Git历史记录中特定文件的所有痕迹?
我有一个Git存储库,有很少的分支和悬挂提交.我想在存储库中搜索所有此类提交以获取特定字符串.
我知道如何记录历史上所有提交的日志,但这些不包括分支或悬空blob,只是HEAD的历史记录.我希望得到所有这些,找到一个错位的特定提交.
我也想知道如何在Mercurial中做到这一点,因为我正在考虑转换.
我有一个包含一定数量行的文件.每一行看起来像这样:
TF_list_to_test10004/Nus_k0.345_t0.1_e0.1.adj:PKMYT1
Run Code Online (Sandbox Code Playgroud)
我想删除所有":"之前的字符,以便仅保留作为基因名称的PKMYT1.由于我不是正则表达式脚本编写的专家,任何人都可以帮助我使用Unix(sed或awk)或R?
我有一个功能分支,它已经变得非常大.在我们的代码中有很多挥之不去的TODO注释,但是我想在尚未合并到master中的提交中找到添加到代码中(并且尚未删除)的所有TODO.我怎么能这样做?
我想只查看在文本中有特定单词的不同文件.
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存储库中删除敏感数据.
之后,我如何仔细检查顽皮位是否真的消失了,即搜索存储库中的所有blob(被引用,垃圾,打包,松散还是其他)来验证违规模式是否已被完全破坏?
使用裸存储库与使用工作树的存储库时,答案是否会发生变化?