我运行了“git status”,下面列出了一些被修改过的文件或标题为“changes not stage for commit”的文件,还列出了一些我想忽略的未跟踪文件(我在这些目录中有一个.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")
9条答案
按热度按时间k0pti3hp1#
理想情况下,您的
.gitignore
应该防止未跟踪(和忽略)的文件显示在状态中,使用git add
等添加。因此,我要求您更正您的.gitignore
您可以执行
git add -u
,以便它将暂存修改和删除的文件。您也可以执行
git commit -a
来只提交修改和删除的文件。请注意,如果您的Git版本低于2.0,并且使用
git add .
,则需要使用git add -u .
(参见“Difference of “git add -A
” and “git add .
”“)。vxf3dgd42#
这对我很有效:
或者更好:
cgvd09ve3#
要暂存修改和删除的文件:
git add -u
其中
-u
是--update
的缩写。mzsu5hc04#
-a:在本次提交中包括所有当前更改/删除的文件。但是请记住,未跟踪的(新)文件不包括在内。
-m:设置提交的消息
iih3973s5#
我碰巧尝试了这个,这样我就可以先看到文件列表:
执行:
编辑:(见评论)这可以一步到位:
klh5stk16#
您没有说明当前的
.gitignore
是什么,但是根目录中包含以下内容的.gitignore
应该可以解决这个问题。xriantvc7#
我想将修改后的文件放入暂存区,以便提交
TL;DR:开始
使用交互模式(
git add -i
),选择更新(在What now> prompt
中键入2
或u
),选择全部(在Update>>
提示符中键入*
),退出交互模式(在What now> prompt
中键入7
或q
)。TL;DR:结束
为了更多的耐心:---
第一步
你可以使用交互模式。
或简写形式,
这将给予所有修改过的文件沿着状态的列表,加上一堆你可以使用的命令选项,比如:
第二步
对于您的情况,请针对
What now>
键入u或2,你下去,
第三步
在
Update>>
提示符中,键入*
,将上面列表中的所有文件添加到临时区域(您也可以通过提供逗号分隔的数字来添加单个文件)。此时,所有修改过的文件都已添加到临时区域,您可以通过在
What now>
提示符下键入1
或s
来验证状态(或者键入q
或7
退出交互模式,然后运行常用的git status
命令),它会显示状态,
我们可以看到,unstaged列为列表中的所有文件显示文本**“nothing”**。
对于问题的第二部分关于忽略未跟踪的文件,我相信这个SO answer会有很大帮助。
zsohkypk8#
不确定这是一个功能还是一个bug,但这对我们很有效:
git commit '' -m "Message"
注意空文件列表''。Git将此解释为提交所有修改过的跟踪文件,即使它们没有暂存,并忽略未跟踪的文件。
sshcrbum9#
**git commit -我是“你的信息在这里”**这对我很有效