Git добавлять только измененные изменения и игнорировать файлы без следа
Я запустил "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")
Ответы
Ответ 1
В идеале ваш .gitignore
должен препятствовать тому, чтобы не отслеживаемые (и проигнорированные) файлы отображались в статусе, добавлены с помощью git add
и т.д. Поэтому я попрошу вас исправить ваш .gitignore
Вы можете сделать git add -u
так, чтобы он обрабатывал измененные и удаленные файлы.
Вы также можете сделать git commit -a
для фиксации только измененных и удаленных файлов.
Обратите внимание, что если у вас есть Git версии до 2.0 и используется git add .
, вам нужно будет использовать git add -u .
(см. "Разница "git add -A
" и "git add .
" " ).
Ответ 2
Это сработало для меня:
#!/bin/bash
git add `git status | grep modified | sed 's/\(.*modified:\s*\)//'`
Или даже лучше:
$ git ls-files --modified | xargs git add
Ответ 3
Вы не сказали, что в настоящее время ваш .gitignore
, но .gitignore
со следующим содержимым в корневом каталоге должен сделать трюк.
.metadata
build
Ответ 4
Мне посчастливилось попробовать это, чтобы сначала просмотреть список файлов:
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