git只添加修改后的更改并忽略未跟踪的文件

问题描述 投票:553回答:6

我运行了“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")
git commit gitignore staging
6个回答
809
投票

理想情况下,你的.gitignore应该防止未跟踪(和忽略)的文件显示状态,使用git add等添加。所以我会要求你纠正你的.gitignore

你可以做git add -u,以便它将分阶段修改和删除文件。

您还可以执行git commit -a以仅提交已修改和已删除的文件。

请注意,如果您在2.0之前使用Git版本并使用git add .,那么您需要使用git add -u .(请参阅“Difference of “git add -A” and “git add .”)。


90
投票

这对我有用:

#!/bin/bash

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

甚至更好:

$ git ls-files --modified | xargs git add

4
投票

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

.metadata
build

3
投票
git commit -a -m "message"

-a:包括此提交中所有当前更改/删除的文件。但请记住,未包含未跟踪(新)文件。 -m:设置提交的消息


0
投票

不确定这是一个功能还是一个bug,但这对我们有用:

git commit '' -m "Message"

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


0
投票

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

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
© www.soinside.com 2019 - 2024. All rights reserved.