我修改了一些文件并暂存它们(它们已添加到索引中)。然后我就错误地打电话了git reset --hard。是否可以将索引恢复到重置之前的状态?换句话说,我正在寻找类似reflogfor index 的东西,它允许我浏览索引的先前状态,甚至是未提交的状态。
使用sed,我可以使用替换一行中的第一个匹配项
sed 's/pattern/replacement/'
Run Code Online (Sandbox Code Playgroud)
和所有匹配使用
sed 's/pattern/replacement/g'
Run Code Online (Sandbox Code Playgroud)
如何只替换最后一场比赛,而不管它之前有多少场比赛?
注意:我没有此存储库的任何先腐败克隆.我相信我的情况与此处描述的不同,因为我错过了一棵树,而不是一块树.
发生了什么:
当我尝试通过LAN克隆存储库(通过SSH)时,Git返回错误,说明存储库已损坏:
remote: error: object file ./objects/2e/223ce259e9e33998d434acc778bc64b393d5d4 is empty
remote: fatal: loose object 2e223ce259e9e33998d434acc778bc64b393d5d4 (stored in ./objects/2e/223ce259e9e33998d434acc778bc64b393d5d4) is corrupt
error: git upload-pack: git-pack-objects died with error.
fatal: git upload-pack: aborting due to possible repository corruption on the remote side.
remote: aborting due to possible repository corruption on the remote side.
Run Code Online (Sandbox Code Playgroud)
我找到了git fsck可用于诊断腐败的地方,但它并没有告诉我任何新的东西:
git fsck --full
error: object file ./objects/2e/223ce259e9e33998d434acc778bc64b393d5d4 is empty
fatal: loose object 2e223ce259e9e33998d434acc778bc64b393d5d4 (stored in ./objects/2e/223ce259e9e33998d434acc778bc64b393d5d4) is corrupt
Run Code Online (Sandbox Code Playgroud)
我已经尝试在本地克隆存储库(使用--no-hardlinks)以查看发生了什么,但我得到了完全相同的结果.
然后我偶然发现了这个问题,回答的人刚刚删除了空文件(步骤3),所以我做了这个(即我已经223ce259e9e33998d434acc778bc64b393d5d4 …
例如,如果我在一个分支上,我想获取分支名称。但如果我处于分离的 HEAD 状态,我想获取提交 id。
基本上,我正在寻找一个.git/HEAD文件界面。我知道我可以做到cat这一点,但也许有一个命令可以为我做到这一点(这样我就不必处理边缘情况,例如GIT_DIR不在里面GIT_WORK_TREE等)