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

git 有办法忽略日志文件吗?

  •  
  •   LeeReamond · 2020-12-29 18:30:05 +08:00 · 1672 次点击
    这是一个创建于 1426 天前的主题,其中的信息可能已经有所发展或是发生改变。

    小白,远程同步开发时遇到日志的问题。

    情况是这样,目前项目文件夹内有一个 logs 文件夹,储存一些日志文件。我在创建项目时添加了.gitignore 文件,设置忽略这个文件夹,如此一来每次 commit 就不会把日志一起传上去。

    但是最近生产服务器同步时遇到问题,我希望的模式是,我在测试机器上写好代码,测试完成,然后同步到 github 远程服务器,然后生产服务器上再执行 git pull 把更新的代码拉下来。

    目前这么操作之后,生产服务器执行 git pull 程序,他会说我本地与远程有不同,需要先删除冗余文件( logs 等)之后才能 pull,这显然不符合要求,每次更新代码都要清空日志也太那个了。

    git 有没有当做不存在的功能?还是我哪里操作错了,请大家指点一下

    16 条回复    2020-12-30 17:28:03 +08:00
    msg7086
        1
    msg7086  
       2020-12-29 18:47:18 +08:00 via Android
    Git add 的时候不要把 logs 里的文件 add 进去。
    Tianao
        2
    Tianao  
       2020-12-29 18:48:37 +08:00
    生产环境本地也有 .gitignore 吧?有的话生产环境下取消对所有已有日志文件的 git 跟踪( git rm --cached <日志文件>),以后再 pull 就不会冲突了。
    LeeReamond
        3
    LeeReamond  
    OP
       2020-12-29 18:50:54 +08:00
    @msg7086 既然已经有.gitignore 文件了,那我执行 git add 的时候应该与被忽略文件夹无关吧,没 add 进日志文件过啊
    aleung
        4
    aleung  
       2020-12-29 18:51:26 +08:00 via Android
    没有看懂为什么 .gitignore 没能解决你的问题。你的问题到底是什么?
    LeeReamond
        5
    LeeReamond  
    OP
       2020-12-29 18:51:47 +08:00
    @Tianao 大佬,你说这个看不太懂,所以是在某文件夹被 ignore 之后,它仍然会被追踪,需要手动取消追踪才行吗?
    LeeReamond
        6
    LeeReamond  
    OP
       2020-12-29 18:52:55 +08:00
    @aleung 生产部署后,产生了新的日志文件,与 github 远程代码不同步。在生产服务器更新代码的时候,执行 pull 命令,会提示我当前文件夹有差异,无法同步,需要先删除差异文件,也就是 logs 等等
    cnxobo
        7
    cnxobo  
       2020-12-29 18:54:13 +08:00
    gitignore 只能忽略尚未被跟踪的文件。如果你之前某个提交提交过了,就算后面匹配上 gitignore , 依然会继续提交的。
    choury
        8
    choury  
       2020-12-29 18:54:34 +08:00 via Android
    忽略之前已有文件要先在 git 中删除才行
    superrichman
        9
    superrichman  
       2020-12-29 18:55:28 +08:00 via iPhone
    https://www.zhihu.com/question/25234996

    skip worktree 或者 assume unchanged
    Tianao
        10
    Tianao  
       2020-12-29 18:59:37 +08:00   ❤️ 1
    @LeeReamond #5 是的,.gitignore 只会在 add 文件时生效,如果仓库是老的.gitignore 是新的,一旦建立跟踪就需要先手动取消跟踪一次。
    LeeReamond
        11
    LeeReamond  
    OP
       2020-12-29 19:00:08 +08:00
    @cnxobo 所以问题的原因是我之前不小心添加过 logs 这个文件夹内的文件吗?但是现在打开项目地址的话,里面是没有 logs 这个文件夹的,怎么回事呢
    Lax
        12
    Lax  
       2020-12-29 19:19:36 +08:00
    有提示的时候,git status 看看?
    Lax
        13
    Lax  
       2020-12-29 19:21:24 +08:00
    怀疑是服务器上的目录里更改了其它文件。问题不一定是你描述的这个样子,报错的信息直接复制一份来看看
    LeeReamond
        14
    LeeReamond  
    OP
       2020-12-29 20:42:07 +08:00
    @Lax 报错信息一串英文,只记得中文含义,原文找不到了,当时为了更新就直接按要求的删文件了,没把报错记下来
    Lax
        15
    Lax  
       2020-12-29 21:42:05 +08:00
    @LeeReamond 那就不好猜了。严重怀疑实际报错信息和上面提到的中文含义不匹配,下次再遇到类似问题至少截图保存一下现场
    dajj
        16
    dajj  
       2020-12-30 17:28:03 +08:00
    @LeeReamond 从 gitignore 中去掉 logs, 然后 git rm logs 目录, 再重新添加 logs 到 ignore
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1883 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 22ms · UTC 16:16 · PVG 00:16 · LAX 08:16 · JFK 11:16
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.