V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
houzhenhong
V2EX  ›  问与答

Git 应当怎样忽略文件时间修改?

  •  
  •   houzhenhong · 2017-12-30 21:41:06 +08:00 · 6238 次点击
    这是一个创建于 2520 天前的主题,其中的信息可能已经有所发展或是发生改变。

    如题,因为压缩包把文件时间修改了,所以大部分文件并没有修改但却显示修改(只因为修改了时间),请问如何让 git 忽略文件时间修改?

    11 条回复    2018-08-26 21:37:05 +08:00
    v2survive
        1
    v2survive  
       2017-12-31 00:44:22 +08:00 via Android   ❤️ 1
    git 并不存文件时间吧… 你这是解压缩的时候文件的 mode 变了?
    geelaw
        2
    geelaw  
       2017-12-31 00:48:02 +08:00
    git 本来就不看文件的修改时间。

    但如果你改变了压缩包里面的文件的修改时间,则压缩文件本身是变化了的,git 没办法知道怎么忽略这个变化。
    houzhenhong
        3
    houzhenhong  
    OP
       2017-12-31 06:29:43 +08:00 via Android
    @geelaw 不是压缩包,而是解压的解压出的文件修改日期改变了,请问这样有什么办法解决吗?
    msg7086
        4
    msg7086  
       2017-12-31 06:51:52 +08:00
    git 天生就忽略文件修改时间,不知道你要解决什么。

    17:48:52 msg7086@DESKTOP-Yuuki:/l/tmp/a$ git init
    Initialized empty Git repository in /l/tmp/a/.git/
    17:48:55 msg7086@DESKTOP-Yuuki:/l/tmp/a$ echo test > test
    17:49:24 msg7086@DESKTOP-Yuuki:/l/tmp/a$ git add test
    17:49:46 msg7086@DESKTOP-Yuuki:/l/tmp/a$ git commit -m initial\ commit
    [master (root-commit) f14ee74] initial commit
    1 file changed, 1 insertion(+)
    create mode 100644 test
    17:49:51 msg7086@DESKTOP-Yuuki:/l/tmp/a$ git status
    On branch master
    nothing to commit, working tree clean
    17:49:55 msg7086@DESKTOP-Yuuki:/l/tmp/a$ touch test
    17:50:01 msg7086@DESKTOP-Yuuki:/l/tmp/a$ git status
    On branch master
    nothing to commit, working tree clean
    17:50:05 msg7086@DESKTOP-Yuuki:/l/tmp/a$ git commit -m file\ change\ commit
    On branch master
    nothing to commit, working tree clean
    17:50:15 msg7086@DESKTOP-Yuuki:/l/tmp/a$
    houzhenhong
        5
    houzhenhong  
    OP
       2017-12-31 11:33:39 +08:00
    @msg7086 就像这样没有任何修改但 git 仍有记录,有可能并不是时间修改的问题,请指明谢谢!

    cy97cool
        6
    cy97cool  
       2017-12-31 11:43:45 +08:00
    \r\n 与\n 的换行方式区别?

    Google "git 忽略换行方式"
    owt5008137
        7
    owt5008137  
       2017-12-31 12:06:12 +08:00 via Android
    有可能变的是文件编码,或者换行符,或者 BOM
    publicccc
        8
    publicccc  
       2017-12-31 12:06:39 +08:00   ❤️ 1
    我用 SourceTree,切分支之类的情况就会出现很多文件显示被修改。
    解决办法是直接点击暂存所有,未修改的文件就消失了。
    msg7086
        9
    msg7086  
       2018-01-01 04:38:58 +08:00
    换行符,BOM,文件 mode,都有可能。
    从你的操作过程来看,换行符的可能性最大,提交签出时本地用 CRLF,而 tarball 里用 LF,导致 git 认为文件改变。
    把所有文件 Stage 一下,让 git 自己做一遍 CRLF 转换,应该就会恢复到正常状态了。
    houzhenhong
        10
    houzhenhong  
    OP
       2018-01-01 12:06:55 +08:00
    @publicccc 正解,谢谢你们!
    vwvjvwv
        11
    vwvjvwv  
       2018-08-26 21:37:05 +08:00
    @publicccc 正解,谢谢你们!
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2633 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 04:40 · PVG 12:40 · LAX 20:40 · JFK 23:40
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.