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

git 如何完全忽略一个已经有追踪关系的文件是否有改动? .gitignore / exclude / --assume-unchanged 都有局限性~

  •  
  •   MajestySolor · 2017-01-25 18:50:30 +08:00 · 2344 次点击
    这是一个创建于 2858 天前的主题,其中的信息可能已经有所发展或是发生改变。
    比如, a 文件已经提交过了,也就是已经追踪了,但是出于某种原因我希望这个 a 文件的后续改动被忽略掉
    .gitignore 和 exclude 都是需要没有追踪的情况下才可行,但是我并不希望删掉远程库上的 a 文件
    git update-index --assume-unchanged a 文件可行,但是当切换分支的时候仍然会因为 a 文件有过改动而无法切换
    研究了好久没合适的解决方法,求指导~~
    7 条回复    2017-01-25 22:49:37 +08:00
    wujysh
        1
    wujysh  
       2017-01-25 19:07:58 +08:00
    git rm --cached a
    MajestySolor
        2
    MajestySolor  
    OP
       2017-01-25 19:15:39 +08:00
    @wujysh 这样会删除远程库的 a 文件,还是不可行的
    kiwi95
        3
    kiwi95  
       2017-01-25 19:20:30 +08:00 via Android
    如果只是一个文件,可以做一个 a.template 的文件作为 git 追踪的文件,大家公用这个文件,新 clone 的仓库手动复制一个命名为 a 就可以了

    用 assumr-unchanged 有点麻烦,要是忘记了这个标记位更麻烦
    kiwi95
        4
    kiwi95  
       2017-01-25 19:21:57 +08:00 via Android
    append:
    把 a 加到 .gitignor 里面
    bigpigeon
        5
    bigpigeon  
       2017-01-25 19:58:22 +08:00
    以前也遇到这个问题,后来改变思路了,配置文件改名为 xx.conf.bak ,然后 git pull 下来后 cp xx.conf.bak xx.conf
    .gitignore 中加入 xx.conf
    klesh
        6
    klesh  
       2017-01-25 22:26:03 +08:00 via Android
    SoloCompany
        7
    SoloCompany  
       2017-01-25 22:49:37 +08:00
    用 named stash

    git stash save ‘ my checkpoint'
    git checkout stash -b my-checkpoint
    git checkout master
    git stash pop

    以后任何时候你希望得到一个 clean working copy 的时候,直接很黄很暴力的(慎重!)
    git reset --hard

    随时恢复工作环境
    git stash apply my-checkpoint

    把 stash 保存为单独一个分支是为了避免误操作把 stash 给覆盖或清除了
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2791 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 13:54 · PVG 21:54 · LAX 05:54 · JFK 08:54
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.