last - git squash all commits




Como faço para remover um único arquivo da área de preparação do Git, mas não removê-lo do índice ou desfazer as alterações no próprio arquivo? (10)

Situação: Eu tenho um repositório Git com arquivos já no índice. Eu faço alterações em vários arquivos, abro o Git e adiciono esses arquivos à minha área de teste com "git add".

Pergunta: Como faço para remover um desses arquivos da área de preparação, mas não removê-lo do índice ou desfazer as alterações no próprio arquivo?


Caso você queira apenas remover um subconjunto das alterações em seu arquivo, você pode usar:

git reset -p

ou

git reset -p <file_name>

Este comando é basicamente o contrário do git add -p : ele somente removerá as mudanças selecionadas da área de preparação. Acho extremamente útil "unadding" algo que adicionei por engano.


Então, um ligeiro ajuste na resposta de Tim Henigan: você precisa usar - antes do nome do arquivo. Ficaria assim:

git reset HEAD -- <file>

Para desassociar tudo de uma vez, execute este comando

git reset HEAD -- .

Quando você faz o git status do git status , o Git lhe diz como desabotoar:

Changes to be committed: (use "git reset HEAD <file>..." to unstage).

Então, git reset HEAD <file> funcionou para mim e as mudanças não foram tocadas.


Se você fizer alterações em muitos arquivos rastreados, mas só quiser encenar alguns deles, faça um

git add .

nem sempre é favorável (ou recomendado) - pois ele organiza todos os arquivos rastreados (alguns casos em que você deseja manter as alterações apenas para si mesmo e não deseja encaminhá-los para o repositório remoto).

nem é ideal fazer um monte de

git add path/to/file1 path/to/file2

se você tem muitos diretórios aninhados (que é o caso na maioria dos projetos) - fica chato

É quando o Git GUI é útil (provavelmente apenas o tempo que eu uso). Basta abrir a GUI do Git, ele mostra as seções de arquivos preparadas e não organizadas. Selecione os arquivos da seção preparada que você deseja desassociar e pressione

Ctrl+U (para janelas)

para desassociá-los.


Você precisa estar no diretório do arquivo e digitar o seguinte no terminal

git reset HEAD .

A suposição é que você precisa redefinir apenas um arquivo.


git checkout -- <file>

Ele funciona perfeitamente para remover arquivos da área de preparação


git reset <file>

Funciona quer você tenha ou não confirmações anteriores.


git reset filename.txt

Se você tiver uma modificação no nome do arquivo.txt, você a adicionou ao palco por engano e deseja remover o arquivo do teste, mas não quer perder as alterações.


git rm --cached FILE

,

git rm -r --cached CVS */CVS




staging