是否有一个git命令可以为每次提交输出:编号主题它使用路径和大小创建的blob(如gitls-tree-l-r但仅适用于创建的blob) 最佳答案 要获取提交(所有和每次提交输出一行):gitrev-list--all--pretty=oneline然后按空格拆分提交,限制为2,并获取每个提交ID和消息获取由提交创建的blob(递归到子目录,显示merge提交,检测重命名和复制,不要在第一行显示提交ID):gitdiff-tree-r-c-M-C--no-commit-id对每一行进行一点解析并排除其中的一些——我们得到新blob的
是否有一个git命令可以为每次提交输出:编号主题它使用路径和大小创建的blob(如gitls-tree-l-r但仅适用于创建的blob) 最佳答案 要获取提交(所有和每次提交输出一行):gitrev-list--all--pretty=oneline然后按空格拆分提交,限制为2,并获取每个提交ID和消息获取由提交创建的blob(递归到子目录,显示merge提交,检测重命名和复制,不要在第一行显示提交ID):gitdiff-tree-r-c-M-C--no-commit-id对每一行进行一点解析并排除其中的一些——我们得到新blob的
我做了一个“gitrm-rf”。(尝试清除我在执行“gitadd”后删除的文件的缓存。)没有想到git会物理删除文件。我还没有初始提交/分支。$gitinit$gitadd.我记得添加我的“.gitignore”。然后,出于懒惰,也懒得去查找正确的命令,我做了:$gitrm-rf.现在git跟踪的每个文件都不见了。糟糕。如何使用悬挂的blob恢复文件$gitfscknotice:HEADpointstoanunbornbranch(master)notice:Nodefaultreferencesdanglingblob45cb2316b079df7898a28bab1389c87d3
我做了一个“gitrm-rf”。(尝试清除我在执行“gitadd”后删除的文件的缓存。)没有想到git会物理删除文件。我还没有初始提交/分支。$gitinit$gitadd.我记得添加我的“.gitignore”。然后,出于懒惰,也懒得去查找正确的命令,我做了:$gitrm-rf.现在git跟踪的每个文件都不见了。糟糕。如何使用悬挂的blob恢复文件$gitfscknotice:HEADpointstoanunbornbranch(master)notice:Nodefaultreferencesdanglingblob45cb2316b079df7898a28bab1389c87d3
场景想象一下,我被迫处理一些始终存储在.zip文件中的文件。ZIP文件中的一些文件是小文本文件并且经常更改,而其他文件较大但幸运的是静态文件(例如图像)。如果我想将这些ZIP文件放在Git存储库中,每个ZIP都被视为一个blob,所以每当我提交存储库时,ZIP文件的大小都会增长......即使里面只有一个小文本文件发生变化!为什么这是现实的MicrosoftWord2007/2010.docx和Excel.xlsx文件是ZIP文件...我想要什么有没有办法告诉Git不要将ZIP文件视为文件,而是将其视为目录并将其内容视为文件?优势更小的存储库大小,即更快的传输/备份Displaycha
场景想象一下,我被迫处理一些始终存储在.zip文件中的文件。ZIP文件中的一些文件是小文本文件并且经常更改,而其他文件较大但幸运的是静态文件(例如图像)。如果我想将这些ZIP文件放在Git存储库中,每个ZIP都被视为一个blob,所以每当我提交存储库时,ZIP文件的大小都会增长......即使里面只有一个小文本文件发生变化!为什么这是现实的MicrosoftWord2007/2010.docx和Excel.xlsx文件是ZIP文件...我想要什么有没有办法告诉Git不要将ZIP文件视为文件,而是将其视为目录并将其内容视为文件?优势更小的存储库大小,即更快的传输/备份Displaycha
我最近在我的存储库上运行了gitfsck--lost-found。我希望看到一些悬而未决的提交,我已经重置了HEAD。但是,我很惊讶地看到可能有数千条悬挂的blob消息。我不认为我的存储库有任何问题,但我很好奇是什么导致了这些悬垂的Blob?只有两个人在存储库上工作,我们没有做任何异常的事情。我不认为它们是由旧版本的文件替换为新文件创建的,因为git需要保留两个blob以便它可以显示历史记录。回想起来,有一次我们确实错误地向项目添加了一个非常大的目录(数千个文件),然后将其删除。这可能是所有悬垂Blob的来源吗?只是想深入了解这个谜团。 最佳答案
我最近在我的存储库上运行了gitfsck--lost-found。我希望看到一些悬而未决的提交,我已经重置了HEAD。但是,我很惊讶地看到可能有数千条悬挂的blob消息。我不认为我的存储库有任何问题,但我很好奇是什么导致了这些悬垂的Blob?只有两个人在存储库上工作,我们没有做任何异常的事情。我不认为它们是由旧版本的文件替换为新文件创建的,因为git需要保留两个blob以便它可以显示历史记录。回想起来,有一次我们确实错误地向项目添加了一个非常大的目录(数千个文件),然后将其删除。这可能是所有悬垂Blob的来源吗?只是想深入了解这个谜团。 最佳答案
这在现实世界中可能从未发生过,也可能永远不会发生,但让我们考虑一下:假设您有一个git存储库,进行提交,然后变得非常非常不幸:其中一个blob最终具有相同的SHA-1作为另一个已经在您的存储库中的。问题是,Git将如何处理这个问题?简单失败?找到一种方法将两个blob链接起来并根据上下文检查需要哪个?比实际问题更像是一个脑筋急转弯,但我发现这个问题很有趣。 最佳答案 我做了一个实验来找出Git在这种情况下的确切行为。这是版本2.7.9~rc0+next.20151210(Debian版本)。我基本上只是通过应用以下差异和重建git将
这在现实世界中可能从未发生过,也可能永远不会发生,但让我们考虑一下:假设您有一个git存储库,进行提交,然后变得非常非常不幸:其中一个blob最终具有相同的SHA-1作为另一个已经在您的存储库中的。问题是,Git将如何处理这个问题?简单失败?找到一种方法将两个blob链接起来并根据上下文检查需要哪个?比实际问题更像是一个脑筋急转弯,但我发现这个问题很有趣。 最佳答案 我做了一个实验来找出Git在这种情况下的确切行为。这是版本2.7.9~rc0+next.20151210(Debian版本)。我基本上只是通过应用以下差异和重建git将