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

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

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

git add -u -except main/dontcheckmein.txt

当前回答

试试看:

git checkout -- main/dontcheckmein.txt

其他回答

我们可以添加所有文件,并排除必须通过git reset删除的文件。

git add .
git reset -- <file_name_to_exclude>

试试看:

git checkout -- main/dontcheckmein.txt

虽然本·杰克逊是正确的,但我想我也会补充一下我是如何使用这个解决方案的。下面是我使用的一个非常简单的脚本(我称之为gitadd)来添加所有更改,除了我在一个名为.gittrackignore的文件中列出的少数更改(非常类似于.gitignore的工作方式)。

#!/bin/bash
set -e

git add -A
git reset `cat .gittrackignore`

这就是我当前的.gittrackignore的样子。

project.properties

我正在开发一个Android项目,在部署时我从命令行编译。这个项目依赖于SherlockActionBar,因此需要在project.properties中引用它,但这会影响编译,所以现在我只需键入gitadd并将所有更改添加到git中,而不必每次都取消添加project.properties。

git add .
git reset main/dontcheckmein.txt

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

git添加。

git reset--main/dontcheckmein.txt

gitcommit-m“提交消息”

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

git状态