Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将git文件历史保存为多个文件_Git_Bisect - Fatal编程技术网

将git文件历史保存为多个文件

将git文件历史保存为多个文件,git,bisect,Git,Bisect,我已经在perf.txt中为我的代码保存了一些自动生成的性能数据。每次改进代码时,我都会运行一个脚本,用新的性能数据覆盖perf.txt。然后我将提交perf.txt 回想起来,重写perf.txt是一个愚蠢的错误,现在,我想对我的改进进行一些分析/绘制一个图表,但不能。当然,旧的perf.txt文件仍然存在于我的提交历史记录中。有什么简单的方法可以得到它们吗?理想情况下,我希望在一个新目录中有perf~1.txt、perf~2.txt等,以及时间戳 或者,如果我可以像git bisect那样简

我已经在perf.txt中为我的代码保存了一些自动生成的性能数据。每次改进代码时,我都会运行一个脚本,用新的性能数据覆盖perf.txt。然后我将提交perf.txt

回想起来,重写perf.txt是一个愚蠢的错误,现在,我想对我的改进进行一些分析/绘制一个图表,但不能。当然,旧的perf.txt文件仍然存在于我的提交历史记录中。有什么简单的方法可以得到它们吗?理想情况下,我希望在一个新目录中有perf~1.txt、perf~2.txt等,以及时间戳


或者,如果我可以像git bisect那样简单地“重放”提交历史(例如git next perf.txt),但是线性地,这也可以工作。

好的,我成功地为此创建了一个shell脚本。让我知道它是否工作正常

更新:

i=0; git rev-list HEAD package.json | while read sha1; do; git show "$sha1:package.json" > "$(printf "%04d" $i)-$sha1-package.json"; ((i++)); done
将输出:

$ ls *-package.json | cat
0000-a15147199edff1b1c0fab89c66214abfb8c65d7c-package.json
0001-51feba61197b837b7d55754a56e12f66f0624ba1-package.json
0002-ed9e34482a303e7e64c397f89533dbe64f51cfbf-package.json
0003-d01253e20158f53c08aa6bc0c1cf66806cd19148-package.json
0004-d57363e800535a7400fde56e97d0a4cd424cffbb-package.json
0005-6e995583a11b63bf1d94142da6408955ee93e7cc-package.json
0006-6bc2a87943f59ad277cdee26aec1c25949c0f091-package.json
0007-e06a8cae3a1de58b770a66cbd124cf50e809fb31-package.json
0008-81bf63359641255dfd340714d0635be03bda8de9-package.json
0009-95559f5117c8a21c1b8cc99f4badc320fd3dcbda-package.json
0010-5e906366dd86dda95df050257513c95834020e5e-package.json
0011-717cb2a5c7909ed16f7c599b02759b27fd2e4258-package.json
0012-f18b75940e61a52ef9c0cf41a4bda3bcdae5c46c-package.json
0013-3c86547a3b841807c4744af0fa4ee3894cc17a33-package.json
0014-d5658e978d9a7234e537d57c45069ce223cb3853-package.json
0015-286c4d91dde12ba32f4a56273d05374b1cbb79e7-package.json
0016-46d680458b74fcf956f6161a2b73b6b00fc2541d-package.json
0017-e64f89d9aaf26c2dae6c7f1ef29a2d3cadd0b4b2-package.json
0018-bd84aad6cdde8cf3ce7842df1febb82fe9816647-package.json
0019-6cf1542a8b823c6bdacf7e6e01dfcb58e9949ff4-package.json
0020-1434b5b56756d02190afe552b626823c97b11a49-package.json
排序时将保持正确的顺序


原件:

i=0; git rev-list HEAD package.json | while read sha1; do; git show "$sha1:package.json" > "$i-$sha1-package.json"; ((i++)); done
package.json
替换为所有3个位置所需的文件

这将创建如下文件:

$ ls *-package.json | cat
0-a15147199edff1b1c0fab89c66214abfb8c65d7c-package.json
1-51feba61197b837b7d55754a56e12f66f0624ba1-package.json
10-5e906366dd86dda95df050257513c95834020e5e-package.json
11-717cb2a5c7909ed16f7c599b02759b27fd2e4258-package.json
12-f18b75940e61a52ef9c0cf41a4bda3bcdae5c46c-package.json
13-3c86547a3b841807c4744af0fa4ee3894cc17a33-package.json
14-d5658e978d9a7234e537d57c45069ce223cb3853-package.json
15-286c4d91dde12ba32f4a56273d05374b1cbb79e7-package.json
16-46d680458b74fcf956f6161a2b73b6b00fc2541d-package.json
17-e64f89d9aaf26c2dae6c7f1ef29a2d3cadd0b4b2-package.json
18-bd84aad6cdde8cf3ce7842df1febb82fe9816647-package.json
19-6cf1542a8b823c6bdacf7e6e01dfcb58e9949ff4-package.json
2-ed9e34482a303e7e64c397f89533dbe64f51cfbf-package.json
20-1434b5b56756d02190afe552b626823c97b11a49-package.json
3-d01253e20158f53c08aa6bc0c1cf66806cd19148-package.json
4-d57363e800535a7400fde56e97d0a4cd424cffbb-package.json
5-6e995583a11b63bf1d94142da6408955ee93e7cc-package.json
6-6bc2a87943f59ad277cdee26aec1c25949c0f091-package.json
7-e06a8cae3a1de58b770a66cbd124cf50e809fb31-package.json
8-81bf63359641255dfd340714d0635be03bda8de9-package.json
9-95559f5117c8a21c1b8cc99f4badc320fd3dcbda-package.json

成功了!我在Unix上很烂,所以可能我做错了什么,但我把你的行放在extract.sh中,不得不删除;在do之后,将((i++)更改为i=`expr$i+1`。唯一缺少的是日期,但我可以接受。非常感谢。