我在我的git存储库中收到此错误:
22:09:15 $ git status
# On branch master
error: Could not read 8124cc15c63be92d534e4cdfa33c38d54deee122
error: unable to read tree object HEAD
nothing to commit (working directory clean)
Run Code Online (Sandbox Code Playgroud)
谷歌搜索error: unable to read tree object HEAD
不会带来太多帮助,这个错误似乎非常罕见.我不知道如何处理它.这可能是硬盘故障吗?
编辑:输出git fsck
如下:
broken link from commit 607328dc80e4901a55b95c683d4fbf43e6df28bf
to tree 8124cc15c63be92d534e4cdfa33c38d54deee122
missing tree 8124cc15c63be92d534e4cdfa33c38d54deee122
dangling tree 56b5d4a5e429d251582ec927bca7ef1225510c41
dangling tree 0259d2d38b18b6136bb6070fb41faf3624453cc6
Run Code Online (Sandbox Code Playgroud) 我在我的Git存储库中有一个包含单词"Foo"的行,之前有几百个提交.
如果有没有办法找到它的修订号,那是最后一次没有购买FishEye?
我正在尝试搜索与特定变量名称相关的git历史记录中的更改.
我试过这样做:
git diff HEAD~25000 | grep -in mydistinctvariablename
Run Code Online (Sandbox Code Playgroud)
结果不告诉我结果行来自哪个提交,并且需要相当多的时间(大约5-7分钟).
有没有人有更好的解决方案,时间和结果?
我有一个git存储库,包含数百个提交和几个分支.如何搜索包含某个字符串的特定提交,例如"辅助函数"?理想情况下,字符串可以用正则表达式表示.
我试图寻找到一个特定的字符串或任意大写体(例如所有提交foobar
,FooBar
,fooBar
在一个Git仓库)引入/删除.
基于这个SO答案(涵盖了不同的基本用例),我首先尝试使用git grep
git rev-list --all | xargs git grep -i foobar
Run Code Online (Sandbox Code Playgroud)
这非常糟糕,因为它只提供了关于字符串是否存在于提交中的信息,因此我最终得到了大量多余的提交.
然后我尝试了pickaxe
,这让我大部分都在那里,例如
git log --pickaxe-regex -S'foobar' --oneline
Run Code Online (Sandbox Code Playgroud)
这只是小写的foobar
.我尝试了-i
旗帜,但这似乎不适用于该--pickaxe-regex
选项.然后我使用这样的模式,这让我更进一步:
git log --pickaxe-regex -S'.oo.ar' --oneline
Run Code Online (Sandbox Code Playgroud)
有没有办法做--pickaxe-regex
不区分大小写的匹配?
我正在使用git v1.7.12.4.
在做一个时git tag
,我并不总是很记得HEAD~6(例如)是包容性的还是排他性的.
鉴于我的大部分提交都以问题编号为前缀,我想知道是否有一些魔术命令用于从其部分消息中搜索提交SHA.
我知道git log
从那里开始工作很容易,但我想要更容易:)
编辑:有人也提出了相反的问题:在Git中,有没有办法获得任意提交的"友好"名称?
我的 git 存储库中有一个文件被更改了很多次。我想知道此文件中存在特定文本的修订。
有没有 git 命令可以获取这些信息?
就像是:
git find "specific_text" -- /frequently/modified/file
Run Code Online (Sandbox Code Playgroud)
这将输出提交列表。
我正在尝试在 gitk 中使用查找/“添加/删除字符串”/正则表达式选项。我尝试过的语法不起作用,我找不到描述它接受的正则表达式语法的文档。
我正在尝试同时匹配Modem_Wakup
和Modem_UnWakeup
。也不Modem_(Un)?Wakeup
是
Modem_\(Un\)?Wakeup
,也不是Modem_\(Un\)\?Wakeup
,也不是任何其他明显的工作。我可以单独找到字符串,所以我知道应该有匹配项。
那么它使用什么语法呢?