• 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏吧

git – 获取特定文件/文件夹的所有先前版本

git 来源:max152 8次浏览

我想检索全部旧版本的特定文件在git存储库中。git – 获取特定文件/文件夹的所有先前版本

我发现使用checkout命令可以得到一个特定的版本,但我希望它们都可以。而具有depth选项的git clone命令似乎不允许我克隆子文件夹(“无效的存储库名称”)。

你知道这是可能的吗?

谢谢

===========解决方案如下:

OP想要检索所有版本,但答案不会实现。特别是如果该文件有数百个修订(所有建议都过于人工)。唯一的半工作解决方案是由@Tobias在注释中提出的,但是建议bash循环会以随机顺序构建文件,以及在对我们的回购使用时会产生数百个空文件。其中一个原因是“rev-list – all –objects”会列出不同的对象(包括树木 – 但对我们的目的无用)。

我从Tobias的解决方案开始,添加了计数器,清理了一下,最终以下面列出的bash脚本的形式重新发明了轮子。

该脚本将:
– 提取所有文件版本到/ tmp/all_versions_exported
– 以1个参数 – 相对路径git仓库里面的文件
– 给结果档案名称的数字前缀(排序)
– 在结果文件提到检查文件名(从橘子:)
分辨苹果 – 提到在结果文件名提交日期(见下面的输出例子)
– 不创建空的结果文件

猫在/ usr/local/bin目录/ git_export_all_file_versions

​​

用例:

cd /home/myname/my-git-repo 

git_export_all_file_versions docs/howto/readme.txt 
    result stored to /tmp/all_versions_exported 

ls /tmp/all_versions_exported 
    0001.17-Oct-2016.ee0a1880ab815fd8f67bc4299780fc0b34f27b30.readme.txt 
    0002.3-Oct-2016.d305158b94bedabb758ff1bb5e1ad74ed7ccd2c3.readme.txt 
    0003.29-Sep-2016.7414a3de62529bfdd3cb1dd20ebc1a977793102f.readme.txt 
    0004.28-Sep-2016.604cc0a34ec689606f7d3b2b5bbced1eece7483d.readme.txt 
    0005.28-Sep-2016.198043c219c81d776c6d8a20e4f36bd6d8a57825.readme.txt 
    0006.9-Sep-2016.5aea5191d4b86aec416b031cb84c2b78603a8b0f.readme.txt 
    <and so on and on . . .> 

编辑:如果你看到象这样的错误:

致命的:不是有效的对象名称 3e93eba38b31b8b81905ceaa95eb47bba ed46494:readme.txt

这意味着您已经从git项目的根文件夹启动脚本。


版权声明:本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系管理员进行删除。
喜欢 (0)