desfazer o índice de actualização do git -- assume-inalterado
a forma como git ignora vigiar/seguir um dado ficheiro dir. só tens de gerir isto.
git update-index --assume-unchanged <file>
8 answers
Para obter desfazer/mostrar os ficheiros / dir que estão configurados para assumir que-não mudou execute isto:
git update-index --no-assume-unchanged <file>
Para obter uma lista dos ficheiros/dir que são assume-unchanged
Execute isto:
git ls-files -v|grep '^h'
Se este é um comando que você usa frequentemente-você pode querer considerar ter um pseudônimo para ele também. Adicionar ao seu global .gitconfig
:
[alias]
hide = update-index --assume-unchanged
unhide = update-index --no-assume-unchanged
Depois de guardar isto para o seu .gitconfig
, pode executar um comando mais limpo.
git hide myfile.ext
Ou
git unhide myfile.ext
Este recurso foi muito útil
A função git update-index tem várias opções que poderá encontrar para escrever do seguinte modo:
git update-index --help
Aqui irá encontrar várias opções-como lidar com o índice de actualização da função.
[Se não sabe o nome do ficheiro]
git update-index --really-refresh
[se souber o nome do ficheiro]
git update-index --no-assume-unchanged <file>
Irá reverter todos os ficheiros que foram adicionados na lista Ignorar.
git update-index --assume-unchanged <file>
Presumo (heh) que quis dizer {[[[0]}, uma vez que não vejo nenhuma opção --assume-changed
. O inverso de --assume-unchanged
é --no-assume-unchanged
.
Se quiser desfazer todos os ficheiros que foram aplicados, assuma inalterado com qualquer estado, e não apenas em 'cache' (o git marca-os por carácter em minúsculas), poderá usar o seguinte comando:
git ls-files -v | grep '^[a-z]' | cut -c 3- | tr '\012' '\000' | xargs -0 git update-index --no-assume-unchanged
-
git ls-files -v
irá imprimir todos os ficheiros com o seu estado -
grep '^[a-z]'
irá filtrar os ficheiros e seleccionar apenas assumir o inalterado
-
cut -c 3-
irá remover o estado e deixar apenas caminhos, cortando do carácter 3-rd até ao fim -
tr '\012' '\000'
irá substituir o carácter de fim de linha (\012) para carácter zero (\000) -
xargs -0 git update-index --no-assume-unchanged
irá passar todas as localizações separadas por zero caracteres paragit update-index --no-assume-unchanged
desfazer
Adicionando à resposta de @adardesign
, Se quiser repor todos os ficheiros que foram adicionados à lista assume-unchanged
para no-assume-unchanged
de uma só vez, poderá fazer o seguinte:
git ls-files -v | grep '^h' | sed 's/^..//' | sed 's/\ /\\ /g' | xargs -I FILE git update-index --no-assume-unchanged FILE || true
Isto irá apenas remover os dois caracteres de saída do grep, ou seja "h "
, escapando então a quaisquer espaços que possam estar presentes nos nomes dos ficheiros, e finalmente || true
irá impedir o comando de terminar prematuramente no caso de alguns ficheiros no loop terem erros.
Para sintetizar as excelentes respostas originais de @adardesign, @adswebwork e @AnkitVishwakarma e comentários de @Bdoserror e @Retsam, com links de documentação adicionais e um nome de código shell...
Comandos Básicos
To reset a file that is assume-unchanged back to normal:
git update-index --no-assume-unchanged <file>
A listar todos os ficheiros que são considerados-inalterados:
git ls-files -v | grep '^[a-z]' | cut -c3-
Para reiniciar todos assumir que-os ficheiros inalterados voltam para normal:
git update-index --really-refresh
Atalhos
Para tornar estas tarefas comuns fáceis de executar no git, adicione a seguinte secção a .gitconfig
para o seu utilizador (por exemplo ~/.gitconfig
num sistema * nix ou macOS):
[alias]
hide = update-index --assume-unchanged
unhide = update-index --no-assume-unchanged
unhide-all = update-index --really-refresh
hidden = ls-files -v
Para facilitar a execução da listagem de todos os ficheiros que se mantêm inalterados numa linha de comandos que suporta alias (como a bash), crie um nome alternativo como:
alias git-hidden="git hidden | grep '^[a-z]' | cut -c3-"
Para conchas sem pseudónimos, um guião pode ajudar.
Se estiver a utilizar As Extensões Git , então siga os seguintes passos:
- Vá para a janela de commit.
- carregue na lista de alterações da pasta de trabalho.
- seleccione a opçãomostrar os ficheiros assumidamente inalterados .
- carregue com o botão direito no ficheiro que deseja abrir.
- Seleccionarnão assumir inalterado .