V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
UnrealEngine
V2EX  ›  程序员

为什么代码库的.gitignore 里明明把某个文件忽略掉了,但是拉取的时候依然会把该文件拉下来?

  •  
  •   UnrealEngine · 85 天前 · 2261 次点击
    这是一个创建于 85 天前的主题,其中的信息可能已经有所发展或是发生改变。

    上网了解下解决办法是将 git 清除本地缓存,即 git rm -r --cached 文件名,然后再提交,但是这样会把生产环境的该文件也会一并删除的吧?

    有什么安全的解决办法?

    第 1 条附言  ·  85 天前
    该文件是 config 配置目录下的文件
    15 条回复    2024-02-04 09:40:01 +08:00
    oneisall8955
        1
    oneisall8955  
       85 天前 via Android
    .gitignore 不是负责忽略提交吗?
    securityCoding
        2
    securityCoding  
       85 天前 via Android
    你的版本没提交吧
    geelaw
        3
    geelaw  
       85 天前 via iPhone   ❤️ 1
    因为 .gitignore 的效果是让 Git 不关心文件的出现(准确理解“出现”是重点),比如 git add . 不会把当前目录下被 .gitignore 匹配的、新出现的文件加到 index 。如果文件已经被 Git 追踪,那 .gitignore 匹配上也不会有任何效果,比如 git add . 会把当前目录下被 .gitignore 匹配的、已经被 Git 追踪的、且发生了变化的文件的变化加入 index 。

    我想楼主应该已经自学了 git rm 里 r 和 cached 的含义了,不再多嘴。至于“生产环境也……”“怎么安全解决”,我们不知道你对生产环境的担忧是什么,因为我们不知道你的生产环境是如何部署的。
    thinkershare
        4
    thinkershare  
       85 天前
    请将问题描述清楚。
    geelaw
        5
    geelaw  
       85 天前 via iPhone   ❤️ 1
    @geelaw #3 应该强调的是“不关心出现”是指不关心工作目录里的出现,已经被 Git 追踪的文件(存在于 commit 里面的)当然会在 checkout 的时候放置在工作目录下,checkout 的过程和 .gitignore 没有任何关系。
    dddd1919
        6
    dddd1919  
       85 天前
    1. 先把生产的配置拷贝到另一个目录
    2. 本地删除 git 里的生产配置并提交
    3. 更新生产代码
    4. 在生产配置目录软链到实际配置文件所在位置
    5. 重启服务
    raykle
        7
    raykle  
       84 天前
    你到底是不想拉下来还是不想提交上去
    fan123199
        8
    fan123199  
       84 天前
    你知道 op 的需求,就是想 ignore 的某个文件,但是又不把这个文件从 origin 删除。这个我目前看的方法,都是用其他方式来解决。 比如, 你要一个 xxxconfig. 那么你需要新建一个 xxxconfig.template, 添加 xxxconfig ,然后都写一个 init 脚本,mv xxxconfig.template xxx.config 。clone 的时候初始化一下
    dontLookAvatar
        9
    dontLookAvatar  
       84 天前
    .gitignore 只忽略未提交前的文件, 但已提交过的还是会存在. 而且, gitignore 影响不了拉取吧
    devliu1
        10
    devliu1  
       84 天前 via Android
    gitignore 只是前端验证,已经提交过的仍然存在。
    mxT52CRuqR6o5
        11
    mxT52CRuqR6o5  
       84 天前 via Android
    用 git gui 工具,手动选择提交范围
    keakon
        12
    keakon  
       84 天前 via Android
    git add -f 是可以强制添加被忽略的文件的
    wanguorui123
        13
    wanguorui123  
       84 天前
    拉取下来删除再提交就对了
    iseki
        14
    iseki  
       84 天前 via Android
    你们的生产环境部署,难道是直接 git pull 吗?这个稍微粗暴了一点,改成通过 CD 去拷贝文件吧
    dongzhuo777
        15
    dongzhuo777  
       83 天前   ❤️ 1
    因为 在加.gitignore 之前 就有人把它 push 上去了。
    你要做的,先拉下来 然后做一次删除的 commit ,然后再把它 push 上去
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   2892 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 30ms · UTC 14:47 · PVG 22:47 · LAX 07:47 · JFK 10:47
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.