Eu executei o "status do git" e listados abaixo estão alguns arquivos que foram modificados / ou sob o título "alterações não preparadas para confirmação". Ele também listou alguns arquivos não rastreados que eu quero ignorar (eu tenho um arquivo ".gitignore" nesses diretórios).
Quero colocar os arquivos modificados na preparação para que eu possa confirmar. Quando executei o "git add.", Foram adicionados os arquivos modificados E os arquivos que quero ignorar na preparação.
Como adiciono apenas os arquivos modificados e ignoro os arquivos não rastreados, se apresentados com o status git abaixo.
Além disso, meus arquivos ".gitignore" estão funcionando corretamente?
$ 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")
Respostas:
Idealmente, você
.gitignore
deve impedir que os arquivos não rastreados (e ignorados) sejam mostrados no status, adicionados usandogit add
etc. Então, peço que você corrija o seu.gitignore
Você pode fazer
git add -u
isso para preparar os arquivos modificados e excluídos.Você também pode fazer
git commit -a
para confirmar apenas os arquivos modificados e excluídos.Observe que se você tem o Git da versão anterior à 2.0 e é usado
git add .
, precisará usá-logit add -u .
(consulte " Diferença de"git add -A
"e"git add .
" ").fonte
add -u
) não adiciona apenasmodified
arquivos, mas também "adiciona" arquivosdeleted
.. algo que atualmente estou tentando impedir.for fil in $(git diff --name-only --relative); do git add $fil; done
. Se eu fosse usá-lo muito (não uso), faria apenas um alias para isso no meu~/.bashrc
arquivo. Obviamente, isso funciona apenas no bash.IFS=$(echo -en "\n\b"); for file in $(git diff --name-only); do git add "$file"; done
git add -u
é curto paragit add --update
egit commit -a
é curto paragit commit --all
Isso funcionou para mim:
Ou melhor ainda:
fonte
git add -u
, portanto, não responde à pergunta.-a: inclui todos os arquivos alterados / excluídos atualmente neste commit. No entanto, lembre-se de que os arquivos (novos) não rastreados não estão incluídos.
-m: define a mensagem do commit
fonte
Você não disse qual é o seu atualmente
.gitignore
, mas um.gitignore
com o seguinte conteúdo no diretório raiz deve fazer o truque.fonte
gitognore
continha um começo (ignore tudo). Mas um único.gitignore
no diretório superior geralmente é muito mais simples de usar e basta.Por acaso tentei isso para que eu pudesse ver a lista de arquivos primeiro:
executar:
Editar: (ver comentários) Isso pode ser alcançado em uma etapa:
fonte
git status | grep modified | awk '{print $2}' | xargs git add && git status
Não tenho certeza se esse é um recurso ou um bug, mas isso funcionou para nós:
git commit '' -m "Message"
Observe a lista de arquivos vazia ''. O Git interpreta isso para confirmar todos os arquivos rastreados modificados, mesmo que eles não sejam testados, e ignorar os arquivos não rastreados.
fonte
Para preparar arquivos modificados e excluídos
git add -u
fonte