求教: git 如何处理本地不想提交的文件?(不是添加到 ignore 文件) - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Vveeb
V2EX    问与答

求教: git 如何处理本地不想提交的文件?(不是添加到 ignore 文件)

  •  
  •   Vveeb 2020-12-22 09:44:17 +08:00 3335 次点击
    这是一个创建于 1763 天前的主题,其中的信息可能已经有所发展或是发生改变。

    具体问题是这样的, 我的工作内容是项目里的两个文件 A,B,需要修改,提交,推送远程。然后为了方便,我在项目里加了一个 ccc 的文件,这个文件只是我想在本地用的,不想给它提交。 这样的话我在 Visual Studio 里工作的时候,每次提交都要手动选择 AB 两个文件提交,而且文件 ccc 会一直在更改区等着我提交。 我知道有种方法是把文件 ccc 添加到 gitignore 规则里,但是添加规则意味着“.gitignore”文件会被修改,文件修改就导致了这个文件等着我去提交,然而“.gitignore”文件是项目项目整体规定好的,我不能去提交“.gitignore”的修改。 所以说,有什么方法,能让我在当前工作分支愉快地修改 A 、B 、ccc 三个文件,还能够不让未提交的 ccc 文件更改影响我对分支的 merge 和 rebase ?

    24 条回复    2020-12-23 11:37:43 +08:00
    zmxnv123
        2
    zmxnv123  
       2020-12-22 09:51:15 +08:00
    .git/info/exclude
    basefas
        3
    basefas  
       2020-12-22 09:51:27 +08:00   2
    不要 git add 这个文件就好
    hakono
        4
    hakono  
       2020-12-22 09:53:41 +08:00   1
    目测 LZ 已经把 git add * 用得炉火纯青了
    f6x
        5
    f6x  
       2020-12-22 09:53:54 +08:00
    每次提交确认文件列表, 不是应该有的好习惯么....
    ZZITE
        6
    ZZITE  
       2020-12-22 09:56:47 +08:00   1
    .git/info/exclude
    项目目录下有个.git 文件,看不到的话搜索下怎么显示。然后在底下这个文件里把不需要提交的文件添加进去
    ZZITE
        7
    ZZITE  
       2020-12-22 09:57:05 +08:00
    .git 文件夹
    wgbx
        8
    wgbx  
       2020-12-22 09:57:44 +08:00
    git update-index --assume-unchanged
    huang86041
        9
    huang86041  
       2020-12-22 10:03:39 +08:00
    我觉得这样刚好能让你提交的时候确认一下提交文件.蛮好
    Vveeb
        10
    Vveeb  
    OP
       2020-12-22 10:11:14 +08:00
    @hakono 萌新,命令行敲命令什么的,根本不会去做的,只是用 VS 自带的 Git 界面这样,鼠标点一点就能完活儿,哇敲好用的~
    misaka19000
        11
    misaka19000  
       2020-12-22 10:16:27 +08:00   1
    设置全局 ignore
    Vveeb
        12
    Vveeb  
    OP
       2020-12-22 10:16:52 +08:00
    @basefas 对的,我应该是没有 add 的,VS 里面的自带的 Git changes 窗口显示的更改数,我没有加到暂存区或者提交什么的,什么都没做。这种情况下我试了把别人的分支 merge 进来是可以的,但是如果我想 rebase 的话,会提示我有未提交的更改,不知道是不是因为我有更改没有 add+commit 的问题导致的?
    Vveeb
        13
    Vveeb  
    OP
       2020-12-22 10:19:50 +08:00
    @zmxnv123 具体怎么操作呢? 是不是我把文件名 “ccc.cs” 添加到这个文件里就可以了?
    Vveeb
        14
    Vveeb  
    OP
       2020-12-22 10:34:05 +08:00
    @ZZITE Ohhhhh !成功了!简单且有效,thanks !添加文件之后在 VS 里,文件没有被立即忽略掉,我随便改了一下文件再保存,它就不在 git changes 的列表里了!
    shuqin2333
        15
    shuqin2333  
       2020-12-22 10:53:21 +08:00
    一般用 idea 操作 git,可以创建多个 change list,提交时提交某个 list 就行了
    basefas
        16
    basefas  
       2020-12-22 10:57:12 +08:00
    @Vveeb 没用过 VSCode 的 Git 功能,刚才看了下,在设置中搜索 Git: Untracked Changes 选择 separate,就可以在 UI 上区分出 Changes 和 Untracked Changes,其中已经 git add 的文件标记为 A,未追踪的文件标记未 U,文件后边有个加号的图标就表示 git add,所以你操作时,不要把你不想追踪的文件也点击那个加号就可以。希望能帮你找到问题的原因。
    HENQIGUAI
        17
    HENQIGUAI  
       2020-12-22 11:22:20 +08:00
    把 ccc 文件放到别的文件夹下面去,既然是一个和此仓库无关的文件,干嘛非得放在仓库的目录里呢。
    Vveeb
        18
    Vveeb  
    OP
       2020-12-22 11:59:14 +08:00
    @HENQIGUAI ,ccc 其实就是个子类啦,在写基类的时候,想时不时地在子类里调调方法,改改属性这样的,然而这个子类只是我自己测试用的,不是业务需要的。所以说我还在想,有没有一种方法我可以创建个“本地-私人用-dev”分支,这里有全部我自己加的乱七八糟的文件,而且可以用这个分支保存我的修改记录。然后创建个“本地-作业用-dev”分支,这个分支里只有 A 、B 两个文件,我在“本地-私人用-dev”分支里一通开发完了,只把 A 、B 俩文件的修改并到我的“本地-作业用-dev”分支上,然后提交+推送,而且切换到我的作业用分支,里面也只有 A 、B 俩文件,这样的。不知道可不可以这样操作的说
    Vveeb
        19
    Vveeb  
    OP
       2020-12-22 13:25:39 +08:00
    @victor 嗯嗯,还得是官方文档!谢谢!
    nextvay
        20
    nextvay  
       2020-12-22 14:31:05 +08:00
    ## 没有 add 的可以用这个
    ignorev2(){
    n=1
    for comm in "$@"
    do
    # echo "第$n 个参数:" $comm
    echo $comm >> .git/info/exclude
    let n+=1
    done
    tail .git/info/exclude
    }

    unignorev2(){
    for comm in "$@"
    do
    `sed -i -e "s/$comm//g" .git/info/exclude`
    done
    `sed -i -e "/^[ ]*$/d" .git/info/exclude`
    tail .git/info/exclude
    }

    根据楼上的,写个 shell 多方便

    ## 已经 add 的可以用这个
    ignore(){br /> git update-index --assume-unchanged $1
    }
    unignore(){
    git update-index --no-assume-unchanged $1
    }
    charlie21
        21
    charlie21  
       2020-12-22 14:38:36 +08:00
    思路:新建一个文件夹 供放置你觉得是临时文件的文件,在 git 系统里忽略整个此文件夹

    git ignore a folder simple way - Google 搜索
    https://stackoverflow.com/questions/343646/ignoring-directories-in-git-repositories-on-windows/37846411#37846411
    dingwen07
        22
    dingwen07  
       2020-12-22 14:53:18 +08:00 via iPhone
    用 GitHub Desktop 打开,写好 commit 并提交,之后回有提交凭据的地方 push
    shm7
        23
    shm7  
       2020-12-22 19:06:09 +08:00 via iPhone
    git stash
    Vveeb
        24
    Vveeb  
    OP
       2020-12-23 11:37:43 +08:00
    @charlie21 也是个不错的选择吼,现在还是暂时用 exclude 吧~
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     1017 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 25ms UTC 22:42 PVG 06:42 LAX 15:42 JFK 18:42
    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