Há um tempo atrás eu fiz isso para ignorar as alterações em um arquivo rastreado pelo git:
git update-index --skip-worktree <file>
Agora, na verdade, quero confirmar as alterações desse arquivo na origem. Como desfazer os efeitos de skip-worktree
?
Respostas:
Aha! Eu simplesmente quero:
fonte
De acordo com http://www.kernel.org/pub/software/scm/git/docs/git-update-index.html , use
git ls-files -v
para ver os arquivos "assumir inalterados" e "pular árvore de trabalho" marcados com uma letra especial. Os arquivos "skip-worktree" estão marcados com
S
.Edit : Como o @amacleod mencionou, criar um alias para listar todos os arquivos ocultos é um bom truque, para que você não precise se lembrar. Eu uso
alias hidden="git ls-files -v | grep '^S'"
no meu .bash_profile. Isso funciona muito bem!fonte
git ls-files -v | grep '^S'
para listar apenas os arquivos que "ocultei" com o skip-worktree. Esperava tornar um alias "oculto" para esse comando, mas colocar um redirecionamento de pipe no alias não parecia funcionar.!
. Assim[alias] ignored = !git ls-files -v | grep "^S"
testado, funciona.grep
, eu não sei. Depende da sua concha, eu acho. Git Bash vem comgrep
, eu acho.'
não funcionou, mas"
funcionou, por exemplogit ls-files -v | grep "^S"
Se você deseja desfazer todos os arquivos aplicados, pule a árvore de trabalho, use o seguinte comando:
git ls-files -v
imprimirá todos os arquivos com seu statusgrep -i ^S
filtrará arquivos e selecionará apenas pular árvore de trabalho (S) ou pular árvore de trabalho e assumir a (s) inalterada (s), -i significa ignorar distinção entre maiúsculas e minúsculascut -c 3-
removerá o status e deixará apenas caminhos, cortando do terceiro caractere até o finaltr '\012' '\000'
substituirá o caractere de final de linha (\ 012) por zero (\ 000)xargs -0 git update-index --no-skip-worktree
passará todos os caminhos separados por zero caracteregit update-index --no-skip-worktree
para desfazerfonte
Baseado na resposta do @ GuidC0DE, aqui está uma versão do Powershell (eu uso o posh-git )
E para referência também o comando oposto para ocultar os arquivos:
fonte
Para aqueles que usam o Tortoise Git:
TortoiseGit > Check for modifications
Show ignore local changes flagged files
. Você deve ver o arquivo que ignorou (ou todos os arquivos que ignorou, se clicou com o botão direito do mouse na pasta)Unflag as skip-worktree and assume-unchanged
fonte
Para todos vocês que amam aliases do Bash, aqui está o meu conjunto para governá-los todos (com base em C0DEF52)
fonte
Esta resposta é direcionada a pessoas menos técnicas que usam o Windows.
Se você não se lembra / sabe em quais arquivos clicou em "ignorar worktree", use:
Para corrigir seu problema:
Você pode acessar os arquivos -> clicar com o botão direito do mouse -> restaurar para uma versão anterior -> clicar na guia "git" na parte superior -> desmarcar a caixa de seleção "skip-worktree" -> clicar em "Aplicar" na parte inferior.
Se os arquivos forem muitos para corrigir manualmente, você precisará consultar as outras respostas.
fonte