776

我运行了“git status”,下面列出了一些已修改/或标题为“未暂存为提交的更改”的文件。它还列出了一些我想忽略的未跟踪文件(我在这些目录中有一个“.gitignore”文件)。

我想将修改后的文件放在暂存中,以便我可以提交它们。当我运行“git add .”时,它会将修改后的文件和我想忽略的文件添加到暂存中。

如果出现下面的 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")
4

10 回答 10

1064
于 2011-08-19T16:44:13.797 回答
121

这对我有用:

#!/bin/bash

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

甚至更好:

$ git ls-files --modified | xargs git add
于 2014-03-16T13:55:10.123 回答
21

暂存修改和删除的文件

git add -u

于 2020-04-20T12:51:14.340 回答
16
git commit -a -m "message"

-a :在此提交中包含所有当前更改/删除的文件。但是请记住,未跟踪的(新)文件不包括在内。

-m :设置提交的消息

于 2019-03-14T12:25:01.313 回答
5

我碰巧尝试了这个,所以我可以先看到文件列表:

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
于 2017-07-26T19:32:43.157 回答
4

你没有说你的当前是什么.gitignore,但是.gitignore在你的根目录中包含以下内容应该可以解决问题。

.metadata
build
于 2011-08-19T16:55:52.260 回答
1

不确定这是功能还是错误,但这对我们有用:

git commit '' -m "Message"

注意空文件列表''。Git 将其解释为提交所有已修改的跟踪文件,即使它们没有暂存,并忽略未跟踪的文件。

于 2018-08-16T14:06:15.920 回答
0
于 2021-02-28T13:05:39.553 回答
0

忽略的一种方法是使用git clean -xffd,它将清除未跟踪的文件。那么你可以使用git add -A

于 2021-07-30T07:24:30.940 回答
-3

git commit -am "your message here"这对我有用

于 2021-05-03T21:57:06.120 回答