我在一个变更集中有一堆文件,但我想特别忽略一个修改过的文件。在git状态后看起来如下:
# modified: main/dontcheckmein.txt
# deleted: main/plzcheckmein.c
# deleted: main/plzcheckmein2.c
...
有没有一种方法可以让我添加git,但忽略我不想触摸的一个文本文件?类似于:
git add -u -except main/dontcheckmein.txt
我在一个变更集中有一堆文件,但我想特别忽略一个修改过的文件。在git状态后看起来如下:
# modified: main/dontcheckmein.txt
# deleted: main/plzcheckmein.c
# deleted: main/plzcheckmein2.c
...
有没有一种方法可以让我添加git,但忽略我不想触摸的一个文本文件?类似于:
git add -u -except main/dontcheckmein.txt
当前回答
现在git支持通过pathspec magic:(exclude)及其缩写:!排除某些路径和文件!。因此,您可以通过以下命令轻松实现。
git add --all -- :!main/dontcheckmein.txt
git add -- . :!main/dontcheckmein.txt
实际上,您可以指定更多:
git add --all -- :!path/to/file1 :!path/to/file2 :!path/to/folder1/*
git add -- . :!path/to/file1 :!path/to/file2 :!path/to/folder1/*
对于Mac和Linux,用引号围绕每个文件/文件夹路径
git add --all -- ':!path/to/file1' ':!path/to/file2' ':!path/to/folder1/*'
其他回答
我经常使用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 add -u
git reset -- main/dontcheckmein.txt
注意:Git随后为此添加了特殊语法,其他答案对此进行了解释。
为了将更改保存在文件中,但不是为了提交,我这样做了
git添加。
git reset--main/dontcheckmein.txt
gitcommit-m“提交消息”
要验证文件是否被排除,请执行以下操作
git状态
添加所有文件
git添加。
获取要粘贴到下面的文件路径
git状态
从提交中删除
git reset--file/to/path/file-to-ignore.txt
试试看:
git checkout -- main/dontcheckmein.txt