Vveeb
V2EX  ›  问与答

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

  •  
  •   Vveeb · Dec 22, 2020 · 4262 views
    This topic created in 2154 days ago, the information mentioned may be changed or developed.

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

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

    git ignore a folder simple way - Google 搜索
    https://stackoverflow.com/questions/343646/ignoring-directories-in-git-repositories-on-windows/37846411#37846411
    dingwen07
    dingwen07
    Dec 22, 2020 via iPhone
    22
    用 GitHub Desktop 打开,写好 commit 并提交,之后回有提交凭据的地方 push
    shm7
    shm7
    Dec 22, 2020 via iPhone
    23
    git stash
    Vveeb
    Vveeb
    OP
    Dec 23, 2020
    24
    @charlie21 也是个不错的选择吼,现在还是暂时用 exclude 吧~
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   2042 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 46ms · UTC 12:53 · PVG 20:53 · LAX 04:53 · JFK 07:53
    ♥ Do have faith in what you're doing.