Eu tenho mudanças em um arquivo, mais um novo arquivo, e gostaria de usar o git stash para guardá-los enquanto eu mudo para outra tarefa. Mas o git stash por si só esconde apenas as alterações do arquivo existente; o novo arquivo permanece na minha árvore de trabalho, desorganizando meu trabalho futuro. Como eu escondo este arquivo não rastreado?
Para armazenar seu diretório de trabalho incluindo arquivos não rastreados (especialmente aqueles que estão no .gitignore) então você provavelmente quer usar este cmd:
"guardar -incluir -desincluir -desincluir
17 de Maio de 2018:
Novas versões do git agora têm git stash --all
que esconde todos os arquivos, incluindo arquivos não rastreados e ignorados.
O 'git stash --include-untracked' não toca mais em arquivos ignorados (testado no git 2.16.2).
Resposta original abaixo:
*[Aviso, ao fazer isto irá apagar permanentemente os seus ficheiros se tiver qualquer directório/ entradas no seu ficheiro gitignore]1**.
A partir da versão 1.7.7 você pode utilizar git stash --include-untracked' ou
git stash save -u' para esconder arquivos não rastreados sem encená-los.
Adicione (git add
) o arquivo e comece a rastreá-lo. Depois esconda. Como todo o conteúdo do arquivo é novo, ele será armazenado, e você pode manipulá-lo conforme necessário.
Eu pensei que isso poderia ser resolvido dizendo ao git que o arquivo existe, ao invés de comprometer todo o conteúdo dele para a área de encenação, e então chamar o 'git stash'. Araqnid descreve como fazer o primeiro.
git add --intent-to-add path/to/untracked-file
ou
git update-index --add --cacheinfo 100644 e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 path/to/untracked-file
No entanto, este último não funciona:
$ git stash
b.rb: not added yet
fatal: git-write-tree: error building trees
Cannot save the current index state