git只添加修改过的内容,忽略未跟踪的文件

我运行了"git status",下面列出了一些被修改过的文件,/在"未分阶段提交的改动"标题下。 它还列出了一些我想忽略的未跟踪的文件(我在这些目录中有一个".gitignore"文件)。

我想把修改过的文件放在staging里,这样我就可以提交它们。 当我运行"git add ."时,它把修改过的文件和我想忽略的文件都加到了staging中。

如果出现下面的git状态,我怎样才能只添加修改过的文件,而忽略未跟踪的文件。

另外,我的".gitignore"文件是否正常工作?

$ git status
# On branch addLocation
# Changes not staged for commit:
#   (use "git add <file>..." to update what will be committed)
#   (use "git checkout -- <file>..." to discard changes in working directory)
#
#       modified:   someProject/path/domain/viewer/LocationDO.java
#       modified:   someProject/path/service/ld/LdService.java
#       modified:   someProject/path/service/ld/LdServiceImpl.java
#       modified:   someProject/path/web/jsf/viewer/LocationFormAction.java
#       modified:   someProject/war/WEB-INF/classes/message/viewer/viewer.properties
#       modified:   someProject/war/page/viewer/searchForm.xhtml
#
# Untracked files:
#   (use "git add <file>..." to include in what will be committed)
#
#       .metadata/
#       someProject/build/
no changes added to commit (use "git add" and/or "git commit -a")
对该问题的评论 (1)
解决办法

理想情况下,你的.gitignore应该阻止未被追踪(和被忽略)的文件显示在状态中,并使用git add添加等等。所以我想请你纠正你的.gitignore

你可以做git add -u,这样它就会把修改过的和删除过的文件显示出来。

你也可以做git commit -a,只提交修改和删除的文件。

注意,如果你的Git版本在2.0之前,并且使用了git add .,那么你需要使用git add -u .(见""git add -A"和"git add ."的区别" )。

评论(7)

这对我来说很有效。

#!/bin/bash

git add `git status | grep modified | sed 's/\(.*modified:\s*\)//'`

甚至更好。

$ git ls-files --modified | xargs git add
评论(7)
git commit -a -m "message"

-a : 包括本次提交中所有已修改/删除的文件。 但请注意,未跟踪的(新)文件不包括在内。 -m 。 设置提交的信息

评论(0)

你没有说目前你的".gitignore "是什么,但在你的根目录下有以下内容的".gitignore "应该可以做到。

.metadata
build
评论(2)

我碰巧试了一下,这样我就可以先看到文件列表了。

git status | grep "modified:" | awk '{print "git add  " $2}' > file.sh

cat ./file.sh

执行:

chmod a+x file.sh
./file.sh 

编辑:(见评论) 这可以一步到位。

git status | grep modified | awk '{print $2}' | xargs git add && git status
评论(2)

不知道这是一个功能还是一个bug,但是这个对我们是有效的。

-m "Message"

请注意,文件列表为空的''。 Git 的解释是提交所有修改过的跟踪文件,即使它们没有被暂存,而忽略未跟踪的文件。

评论(1)