Um dos comandos que acho incrivelmente úteis no Git é git add -u
lançar tudo, menos os arquivos não rastreados, no índice. Existe um inverso disso? Nos últimos meses, muitas vezes me encontrei em uma posição em que adicionei algumas atualizações interativamente ao índice e quero adicionar todos os arquivos não rastreados a esse índice antes de confirmar.
Existe uma maneira de adicionar apenas os arquivos não rastreados ao índice sem identificá-los individualmente? Não vejo nada óbvio nos documentos de ajuda, mas talvez eu esteja sentindo falta disso?
Obrigado.
.gitignore
foi especificamente projetado para esse fim, nãogit add -u
.Respostas:
É fácil com
git add -i
. Digitea
(para "adicionar não rastreado"), depois*
(para "todos"), depoisq
(para sair) e pronto.Para fazer isso com um único comando:
echo -e "a\n*\nq\n"|git add -i
fonte
echo -e "a\n*\nq\n"|git add -i
Argument list too long
... tão perto!git add -i
seguida4
para adicionar untracked em seguida,*
para todos, em seguida,q
parar de fumargit ls-files -o --exclude-standard
fornece arquivos não rastreados, para que você possa fazer algo como abaixo (ou adicionar um alias a ele):fonte
-o, --others
Show other (i.e. untracked) files in the output
Não é exatamente o que você está procurando, mas achei isso bastante útil:
Adicionará todos os arquivos ao índice, mas sem o conteúdo deles. Os arquivos que não foram rastreados agora se comportam como se fossem rastreados. O conteúdo deles será exibido em
git diff
, e você poderá adicioná-lo interativamentegit add -p
.fonte
git commit -p
percorrer novos arquivos.Você pode adicionar isso ao seu arquivo ~ / .gitconfig:
Em seguida, na linha de comando, basta executar:
fonte
As pessoas sugeriram canalizar a saída de
git ls-files
para,git add
mas isso falhará nos casos em que houver nomes de arquivos contendo espaços em branco ou caracteres globos como*
.A maneira segura seria usar:
onde
-z
diz ao git para usar\0
terminadores de linha e-0
diz ao xargs o mesmo. A única desvantagem dessa abordagem é que a-0
opção não é padrão, portanto, apenas algumas versões daxargs
suportam.fonte
git ls-files
lista os arquivos no diretório atual. Se você deseja listar arquivos não rastreados de qualquer lugar da árvore, isso pode funcionar melhor:Para adicionar todos os arquivos não rastreados na árvore:
fonte
Eu tentei isso e funcionou:
git stash
só colocará todos os arquivos rastreados modificados em uma pilha separada e os arquivos restantes serão arquivos não rastreados. Em seguida, issogit add .
fará com que todos os arquivos não sejam rastreados, conforme necessário. Eventualmente, para recuperar todos os arquivos modificados da pilha, fazendogit stash pop
fonte
Se você tiver milhares de arquivos não rastreados (ugh, não pergunte),
git add -i
não funcionará ao adicionar*
. Você receberá um erro informandoArgument list too long
.Se você também estiver no Windows (não pergunte # 2 :-) e precise usar o PowerShell para adicionar todos os arquivos não rastreados, use este comando:
fonte
git ls-files -o --exclude-standard | % { git add $_ }
Muitas dicas boas aqui, mas dentro do Powershell não consegui fazê-lo funcionar.
Sou desenvolvedor .NET e ainda utilizamos o Windows OS principalmente porque não utilizamos tanto o .Net core e a plataforma cruzada, por isso meu uso diário com o Git é em um ambiente Windows, onde o shell usado é mais frequentemente o Powershell e não Git bash.
O procedimento a seguir pode ser seguido para criar uma função com alias para adicionar arquivos não rastreados em um repositório Git.
Dentro do seu arquivo $ profile do Powershell (caso esteja faltando - você pode executar: New-Item $ Profile)
notepad $ Profile
Agora adicione este método do PowerShell:
Salve o arquivo $ profile e recarregue-o no Powershell. Em seguida, recarregue seu arquivo $ profile com:. $ profile
Isso é semelhante ao comando de origem nos ambientes * nix IMHO.
Então, da próxima vez, se você é desenvolvedor usando o Powershell no Windows contra o repositório Git e deseja incluir apenas arquivos não rastreados, pode executar:
AddUntracked-Git
Isso segue a convenção do Powershell, onde você tem substantivos verbais.
fonte
git add. (adicione todos os arquivos neste diretório)
git add -all (adiciona todos os arquivos em todos os diretórios)
O git add -N pode ser útil para listar quais para mais tarde ....
fonte
git add -u
irá adicionar arquivos modificados não untrackedPara adicionar todos os arquivos não rastreados, o comando git é
Além disso, se você quiser obter mais detalhes sobre as várias opções disponíveis, digite o comando
em vez do primeiro comando, com isso você terá mais opções, incluindo a opção de adicionar todos os arquivos não rastreados, como mostrado abaixo:
fonte