git добавляет только измененные изменения и игнорирует неотслеживаемые файлы - PullRequest
572 голосов
/ 19 августа 2011

Я запустил «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")

Ответы [ 6 ]

796 голосов
/ 19 августа 2011

В идеале ваш .gitignore должен предотвращать отображение неотслеживаемых (и игнорируемых) файлов в статусе, добавление с использованием git add и т. Д. Поэтому я бы попросил вас исправить ваши .gitignore

Вы можете сделатьgit add -u так, чтобы он установил измененные и удаленные файлы.

Вы также можете сделать git commit -a для фиксации только измененных и удаленных файлов.

Обратите внимание, что если у вас есть Git версиидо 2.0 и использовал git add ., тогда вам нужно будет использовать git add -u . (см. « Разница между« git add -A »и« git add . »»).

90 голосов
/ 16 марта 2014

Это сработало для меня:

#!/bin/bash

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

Или даже лучше:

$ git ls-files --modified | xargs git add
4 голосов
/ 19 августа 2011

Вы не сказали, что в данный момент является вашим .gitignore, но .gitignore со следующим содержимым в корневом каталоге должно сработать.

.metadata
build
3 голосов
/ 14 марта 2019
git commit -a -m "message"

-a: Включает все текущие измененные / удаленные файлы в этот коммит.Имейте в виду, однако, что неотслеживаемые (новые) файлы не включены.

-m: Устанавливает сообщение фиксации

0 голосов
/ 16 августа 2018

Не уверен, что это функция или ошибка, но у нас это сработало:

git commit '' -m "Message"

Обратите внимание на пустой список файлов ''.Git интерпретирует это, чтобы зафиксировать все измененные отслеживаемые файлы, даже если они не являются промежуточными, и игнорировать неотслеживаемые файлы.

0 голосов
/ 26 июля 2017

Я попытался это сделать, чтобы сначала увидеть список файлов:

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...