发现一个邪修快速清理 Git 项目里面空文件夹的方法 不知道有没有什么其他标准做法. - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
git
Pro Git
Atlassian Git Tutorial
Pro Git 简体中文翻译
GitX
JoeJoeJoe
71.46D
V2EX    git

发现一个邪修快速清理 Git 项目里面空文件夹的方法 不知道有没有什么其他标准做法.

  •  
  •   JoeJoeJoe
    PRO
    1 day ago 2266 views

    因为项目里面来回切分支, 有些分支是有特殊资源或者 sdk 的, 切完分支之后, 会遗留一些空文件夹在本地.

    之前觉得没啥, 但是现在用 AI 开发, AI 每次读到空文件夹的时候, 都会嗦几遍发现 xxx 文件夹, 但是是空的, 看样子 xxx, 让我来 XXX, 然后就走偏了.

    因为空文件夹默认是不被记录到 git 里面的, 所以我现在的做法是, 把项目里的内容全删掉, 然后再 discard, 一个干干净净的目录就出来了

    不知道佬们有没有什么更专业的处理方法? 欢迎讨论, 求轻喷.

    21 replies    2026-04-28 21:00:30 +08:00
    rb6221
        1
    rb6221  
       1 day ago   4
    如果你的分支差异有如此之大的话,我一般都是直接在不同的目录拉不同分支,相当于不同的两个项目
    wfg
        2
    wfg  
       1 day ago via iPhone   4
    git clean -fdx
    shangsharon
        3
    shangsharon  
       1 day ago
    硬盘遭不住
    JoeJoeJoe
        4
    JoeJoeJoe  
    OP
    PRO
       1 day ago
    @rb6221 确实更合理, 感谢!

    @wfg 确实是专业的做法! 感恩!

    @shangsharon 还好吧.
    zzlove
        5
    zzlove  
       1 day ago   1
    试试 worktree, 各分支在独立的目录里面跑,来回切还不用重新装依赖
    JoeJoeJoe
        6
    JoeJoeJoe  
    OP
    PRO
       1 day ago
    @zzlove 感谢, 我试试
    lel020
        7
    lel020  
       1 day ago
    全删掉也太离谱了, 我倒是经常会执行`git clean -dfx`, 删除所有忽略内容,
    不过你这情况确实 worktree 更合适,
    JoeJoeJoe
        8
    JoeJoeJoe  
    OP
    PRO
       1 day ago
    @lel020 哈哈哈哈 邪修
    XuDongJianSama
        9
    XuDongJianSama  
       1 day ago   1
    下次直接在发现问题的时候跟 ai 说就行,搞好或了解之后。/rewind 一下,还不占上下文
    JoeJoeJoe
        10
    JoeJoeJoe  
    OP
    PRO
       1 day ago
    @XuDongJianSama 又学到了一个新知识, 太感谢了!

    ps: 今天这个 git worktree 我之前都没听说过 今天真是美好的一天
    onedge
        11
    onedge  
       1 day ago
    @wfg 还真第一次用这个命令 LOL
    itskingname
        12
    itskingname  
       1 day ago
    还可以再做一个清除 Java 项目里面嵌套文件夹的工具。

    com/xxx/yyy/aaa/bbb/ccc/service/abc/def/xyz/kkk.java

    每个文件夹只有一个子文件夹,没有其他东西。

    这种东西纯粹脑子有坑。
    gongxuanzhang
        13
    gongxuanzhang  
       1 day ago   1
    worktree 在多分支并行修改的时候可能互相冲突。 尤其是多个 session 同时在多个分支上改代码的时候。 我一般是直接要求强制物理隔离。 仅供参考
    Tidle
        14
    Tidle  
       1 day ago   1
    使用 git post-checkout hook 切换分支后执行脚本自动删除空目录
    JoeJoeJoe
        15
    JoeJoeJoe  
    OP
    PRO
       1 day ago
    @itskingname 这个是真的难绷 现代语言很要有这么设计的了

    @gongxuanzhang 刚开始用上, 感谢提醒!

    @Tidle 感谢
    94
        16
    94  
       1 day ago
    为什么不用 worktree……
    JoeJoeJoe
        17
    JoeJoeJoe  
    OP
    PRO
       1 day ago
    @94 一切奇怪的操作可能都是源于菜, 哈哈哈哈, 工作十多年了, 今天才知道 worktree.
    94
        18
    94  
       1 day ago
    @JoeJoeJoe #17 ,Joe 佬你之前同一个项目是怎么并行开发的……
    JoeJoeJoe
        19
    JoeJoeJoe  
    OP
    PRO
       1 day ago
    @94 #18 我要干的比较杂, 同一个项目基本就是从头做到尾, 中间中断我就 Storage 一下, 就这么混了十来年

    之前并行搞主要是一个 Flutter 项目, 一个 C#项目, 然后两个原生项目这样, 他们都是不同的仓库, 就最近需要集成一个三方, 改动比较大, 发现了这么个难受的问题, 所以上来问问大家, 结果学到了新的知识, 哈哈哈哈
    liushengxian1230
        20
    liushengxian1230  
       1 day ago
    学到了 Git 2.5 引入的一个功能 Git 2.50 我才用上
    287854442
        21
    287854442  
       1 day ago
    这种 case 感觉更适合 worktree
    About     Help     Advertise     Blog     API     FAQ     Solana     1007 Online   Highest 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 54ms UTC 1:59 PVG 02:59 LAX 11:59 JFK 14:59
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86