git add only modified changes and ignore untracked files
我运行了"git status",下面列出的是一些修改过的文件/或标题"changes not staged for commit"。它还列出了一些我想忽略的未跟踪文件(我在这些目录中有一个".gitignore"文件)。
我想把修改过的文件放到临时文件中,以便提交它们。当我运行"git-add."时,它添加了修改过的文件和我想忽略的文件,以进行转移。
如果下面显示的是git状态,如何只添加修改过的文件并忽略未跟踪的文件?
另外,我的".gitignore"文件是否正常工作?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | $ 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") |
理想情况下,您的
您可以执行
您还可以执行
请注意,如果2.0之前版本的Git使用了
这对我很有用:
1 2 3 | #!/bin/bash git add `git status | grep modified | sed 's/\(.*modified:\s*\)//'` |
号
或者更好:
1 | $ git ls-files --modified | xargs git add |
您没有说当前的
1 2 | .metadata build |
1 | git commit -a -m"message" |
。
-A:包括此提交中当前更改/删除的所有文件。但请记住,未跟踪(新)文件不包括在内。-M:设置提交的消息
不确定这是一个特性还是一个bug,但这对我们有用:
江户十一〔11〕。
请注意空文件列表""。Git解释这一点以提交所有修改过的跟踪文件,即使它们不是分段的,也忽略未跟踪的文件。
我碰巧尝试过这个,这样我可以先看到文件列表:
1 2 3 | git status | grep"modified:" | awk '{print"git add " $2}' > file.sh cat ./file.sh |
。
执行:
1 2 | chmod a+x file.sh ./file.sh |
编辑:(见注释)这可以通过一个步骤实现:
1 | git status | grep modified | awk '{print $2}' | xargs git add && git status |
。