在git中,我有两个具有不同提交日期的文件。但是,当我制作git-archive
时,我会得到相同的提交日期,为什么?
[[ -e git_test ]] && rm -rf git_test
mkdir git_test
cd git_test
git init
# make file01
echo 'f01 $Format:%cd$' > file01.txt
echo 'file01.txt export-subst' >> .gitattributes
git add .gitattributes file01.txt
git commit -m "adding file01"
sleep 1
# make file02
echo 'f02 $Format:%cd$' > file02.txt
echo 'file02.txt export-subst' >> .gitattributes
git add .gitattributes file02.txt
git commit -m "adding file02"
# git archive
git archive HEAD | tar -x -C ..
echo
echo "git log date"
git log --format="%cd" file01.txt
git log --format="%cd" file02.txt
echo
echo "git archive date"
cd ..
cat *.txt
在输出中,git-log
提交日期不同(一秒),但使用git-archive
生成的文件具有相同的提交日期
git log date
Fri Dec 27 15:17:22 2013 -0300
Fri Dec 27 15:17:23 2013 -0300
git archive date
f01 Fri Dec 27 15:17:23 2013 -0300
f02 Fri Dec 27 15:17:23 2013 -0300
答案 0 :(得分:0)
git archive
期间关键字替换中使用的提交日期是您要导出的提交的提交日期,即15:17:23的第二次提交。 Git将找不到触及特定文件的最新提交并获取其提交日期。这就是你跑步时发生的事情,例如git log --format="%cd" file01.txt
(好吧,它会列出触及该文件的所有提交的提交日期,但在这种情况下只有一次提交。)
答案 1 :(得分:0)
我仅使用archive
解决了上次修改过的文件
git archive HEAD $(git diff --name-only HEAD^) | tar -x -C
这种方式只修改了最后修改过的文件的提交日期(和文件)。