Я запустил «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")
Ответы:
В идеале вы
.gitignore
должны предотвратить отображение неотслеживаемых (и игнорируемых) файлов в статусе, добавлять их с помощьюgit add
и т. Д. Поэтому я бы попросил вас исправить ваши.gitignore
Вы можете сделать
git add -u
так, чтобы он установил измененные и удаленные файлы.Вы также можете сделать
git commit -a
для фиксации только измененные и удаленные файлы.Обратите внимание, что если у вас есть Git версии до 2.0 и используется
git add .
, то вам нужно будет использоватьgit add -u .
(см. « Разница между«git add -A
»и«git add .
» »).источник
add -u
) добавляет не толькоmodified
файлы, но и «добавляет»deleted
те, что я сейчас пытаюсь предотвратить.for fil in $(git diff --name-only --relative); do git add $fil; done
. Если бы я использовал это много (я не использую), я бы просто сделал псевдоним для этого в моем~/.bashrc
файле. Это, конечно, работает только в bash.IFS=$(echo -en "\n\b"); for file in $(git diff --name-only); do git add "$file"; done
git add -u
короткаgit add --update
иgit commit -a
короткаgit commit --all
Это сработало для меня:
Или даже лучше:
источник
git add -u
, поэтому оно не отвечает на вопрос.-a: Включает все измененные / удаленные файлы в этот коммит. Имейте в виду, однако, что неотслеживаемые (новые) файлы не включены.
-m: устанавливает сообщение коммита
источник
Вы не сказали, что в данный момент принадлежит вам
.gitignore
, но.gitignore
со следующим содержимым в вашем корневом каталоге следует добиться цели.источник
gitognore
содержит начало (игнорировать все). Но единственный.gitignore
в верхнем каталоге, как правило, гораздо проще в использовании и достаточно.Я попробовал это, чтобы сначала увидеть список файлов:
выполнить:
Изменить: (см. Комментарии) Это может быть достигнуто за один шаг:
источник
git status | grep modified | awk '{print $2}' | xargs git add && git status
Не уверен, что это особенность или ошибка, но у нас это сработало:
git commit '' -m "Message"
Обратите внимание на пустой список файлов. Git интерпретирует это, чтобы зафиксировать все измененные отслеживаемые файлы, даже если они не являются промежуточными, и игнорировать неотслеживаемые файлы.
источник
Размещать измененные и удаленные файлы
git add -u
источник