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