0

在 git 中,我有两个提交日期不同的文件。但是,当我 make 时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
4

2 回答 2

0

我解决archive了仅使用最后修改的文件

 git archive HEAD $(git diff --name-only HEAD^) | tar -x -C

这种方式只修改了最后修改文件的提交日期(和文件)。

于 2014-02-03T17:56:11.883 回答
0

在关键字替换期间使用的提交日期git archive是您要导出的提交的日期,即在 15:17:23 进行的第二次提交。Git 不会定位最近一次触及特定文件的提交并获取其提交日期。这就是运行 eg 时发生的情况git log --format="%cd" file01.txt(好吧,它会列出所有涉及该文件的提交的提交日期,但在这种情况下只有一个提交)。

于 2013-12-27T18:57:04.780 回答