在
GitFaq我可以读,那
Git sets the current time as the timestamp on every file it modifies, but only those.
但是,我尝试了这个命令序列(编辑:添加完整的命令序列)
$git init test && cd test
Initialized empty Git repository in d:/test/.git/
$touch filea fileb
$git add .
$git commit -m "first commit"
[master (root-commit) fcaf171] first commit
0 files changed, 0 insertions(+), 0 deletions(-)
create mode 100644 filea
create mode 100644 fileb
$ls -l > filea
$touch fileb -t 200912301000
$ls -l
total 1
-rw-r--r-- 1 exxxxxxx Administ 132 Feb 12 18:36 filea
-rw-r--r-- 1 exxxxxxx Administ 0 Dec 30 10:00 fileb
$git status -a
warning: LF will be replaced by CRLF in filea
# On branch master
warning: LF will be replaced by CRLF in filea
# Changes to be committed:
# (use "git reset HEAD <file>..." to unstage)
#
# modified: filea
#
$git checkout .
$ls -l
total 0
-rw-r--r-- 1 exxxxxxx Administ 0 Feb 12 18:36 filea
-rw-r--r-- 1 exxxxxxx Administ 0 Feb 12 18:36 fileb
现在我的问题:为什么git会改变文件fileb的时间戳?我希望时间戳保持不变.
我的命令是否会导致问题?
也许有可能做一些像git checkout这样的事情. – 修改了吗?
我在mingw32 / windows xp下使用git版本1.6.5.1.1367.gcd48.
最佳答案 这不会发生在Linux文件系统上.我测试了你描述的确切场景,并保留了我未改动的文件的修改时间:
sean@SEAN-PC:~/Desktop/test$ls -la tests/BusTests.*
-r--r--r-- 1 sean sean 8 2010-02-11 11:53 tests/BusTests.c
-r--r--r-- 1 sean sean 1 2010-02-11 11:51 tests/BusTests.h
sean@SEAN-PC:~/Desktop/test$git status -a
# On branch master
# Changes to be committed:
# (use "git reset HEAD <file>..." to unstage)
#
# modified: tests/BusTests.c
#
sean@SEAN-PC:~/Desktop/test$git checkout .
sean@SEAN-PC:~/Desktop/test$ls -la tests/BusTests.*
-r--r--r-- 1 sean sean 1 2010-02-11 11:55 tests/BusTests.c
-r--r--r-- 1 sean sean 1 2010-02-11 11:51 tests/BusTests.h
我怀疑这是Git的mingw32版本中的一个未知错误,你可能想向开发者报告:http://code.google.com/p/msysgit/issues/list
当你只检查修改后的文件时,看看是否修改了BusTests.h修改标记会很有趣:
git checkout -- tests/BusTests.c