我在一个变更集中有一堆文件,但我想特别忽略一个修改过的文件。在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 add*&&git reset main/dontcheckmein.txt
其他回答
对于问题中的特定情况,最简单的方法是添加所有扩展名为.c的文件,而忽略其他所有内容:
git add *.c
从git scm(或/和man git add):
git-add<pathspec>…要从中添加内容的文件。可以使用Fileglobs(例如*.c)来添加所有匹配的文件。<…>
请注意,这意味着您还可以执行以下操作:
git add **/main/*
添加主文件夹中的所有文件(未忽略)。你甚至可以用更复杂的模式来疯狂:
git add **/s?c/*Service*
上面将添加s(任意字符)c文件夹中的所有文件,并且文件名中有Service。
显然,每个命令不限于一个模式。也就是说,您可以要求git添加所有扩展名为.c和.h的文件:
git add *.c *.h
这个链接可能会给你更多的地球模式的想法。
我发现,当我进行许多更改时,它特别有用,但我仍然希望我的提交保持原子性,反映渐进的过程,而不是我当时可能正在进行的一大堆更改。当然,在某些情况下,提出复杂模式的成本超过了用更简单的方法添加文件,甚至一次添加一个文件的成本。然而,大多数时候,我可以很容易地用一个简单的模式找到我需要的文件,并排除所有其他文件。
顺便说一句,你可能需要引用你的glob模式来让它们工作,但我从来没有这样做过。
不是直接按照你的要求,因为它不是一个命令就能实现的,但结果应该是你想要的。
通过将所有文件添加到临时区域后
git add -u
键入gitstatus将建议您
git restore --staged main/dontcheckmein.txt
为了将更改保存在文件中,但不是为了提交,我这样做了
git添加。
git reset--main/dontcheckmein.txt
gitcommit-m“提交消息”
要验证文件是否被排除,请执行以下操作
git状态
使用gitadd-A一次添加所有修改的和新添加的文件。
实例
git add -A
git reset -- main/dontcheckmein.txt
你可以试试这个:git add*&&git reset main/dontcheckmein.txt