我在一个变更集中有一堆文件,但我想特别忽略一个修改过的文件。在git状态后看起来如下:

# modified:   main/dontcheckmein.txt
# deleted:    main/plzcheckmein.c
# deleted:    main/plzcheckmein2.c
...

有没有一种方法可以让我添加git,但忽略我不想触摸的一个文本文件?类似于:

git add -u -except main/dontcheckmein.txt

当前回答

不是直接按照你的要求,因为它不是一个命令就能实现的,但结果应该是你想要的。

通过将所有文件添加到临时区域后

git add -u

键入gitstatus将建议您

git restore --staged main/dontcheckmein.txt

其他回答

我经常使用git add-patch,并希望这样做,以避免在同一个文件中始终命中d。为了完成这项工作,我使用了几个非常古怪的git别名:

[alias]
    HELPER-CHANGED-FILTERED = "!f() { git status --porcelain | cut -c4- | ( [[ \"$1\" ]] && egrep -v \"$1\" || cat ); }; f"
    ap                      = "!git add --patch -- $(git HELPER-CHANGED-FILTERED 'min.(js|css)$' || echo 'THIS_FILE_PROBABLY_DOESNT_EXIST' )"

在我的例子中,我只是想一直忽略某些缩小的文件,但对于更一般的用例,可以使用类似$GIT_EXCLUDE_PATTERN的环境变量。

试试看:

git checkout -- main/dontcheckmein.txt

为了将更改保存在文件中,但不是为了提交,我这样做了

git添加。

git reset--main/dontcheckmein.txt

gitcommit-m“提交消息”

要验证文件是否被排除,请执行以下操作

git状态

添加所有文件

git添加。

获取要粘贴到下面的文件路径

git状态

从提交中删除

git reset--file/to/path/file-to-ignore.txt

使用gitadd-A一次添加所有修改的和新添加的文件。

实例

git add -A
git reset -- main/dontcheckmein.txt