A maneira como você Git ignora assistindo / rastreando um diretório / arquivo específico. você acabou de executar isso:
git update-index --assume-unchanged <file>
Agora, como você desfaz isso para que eles sejam vistos novamente? (Vamos chamá-lo de não assumir).
git
version-control
git-index
adardesign
fonte
fonte
Respostas:
Para desfazer / mostrar os diretórios / arquivos configurados para assumir inalterados, execute o seguinte procedimento :
git update-index --no-assume-unchanged <file>
Para obter uma lista de diretórios / arquivos
assume-unchanged
executados :git ls-files -v|grep '^h'
fonte
git ls-files -v|grep '^h'|cut -c3-
que fornecerá apenas os nomes dos arquivos, sem o prefixo "h".assume-unchanged
, basta usargit update-index --really-refresh
. Com esse comando, você não precisa procurar os arquivosgit ls-files
primeiro.Se esse é um comando que você usa com freqüência - você também pode considerar ter um alias para ele. Adicione ao seu global
.gitconfig
:Como definir um alias (se você ainda não sabe):
Exemplo:
Depois de salvar isso no seu
.gitconfig
, você pode executar um comando mais limpo.ou
Essa documentação do git foi muito útil.
Conforme os comentários, este também é um alias útil para descobrir quais arquivos estão sendo ocultos no momento:
fonte
hidden = ! git ls-files -v | grep '^h' | cut -c3-
A função git update-index possui várias opções, você pode encontrar digitando como abaixo:
Aqui você encontrará várias opções - como lidar com a função update-index.
[se você não souber o nome do arquivo]
[se você souber o nome do arquivo]
reverterá todos os arquivos pelos quais foram adicionados na lista de ignorados.
fonte
git update-index --no-assume-unchanged <file>
salvei minha vida .. ok, eu poderia sincronizar a pasta novamente, mas queria uma solução "real" para esse problema.Eu suponho (heh) você quis dizer
--assume-unchanged
, já que não vejo nenhuma--assume-changed
opção. O inverso de--assume-unchanged
é--no-assume-unchanged
.fonte
Para sintetizar as excelentes respostas originais de @adardesign, @adswebwork e @AnkitVishwakarma, e comentários de @Bdoserror, @Retsam, @seanf e @torek, com links adicionais para documentação e aliases concisos ...
Comandos básicos
Para redefinir um arquivo que é assumido inalterado de volta ao normal:
Para listar todos os arquivos que são assumidos inalterados:
Para redefinir todos os arquivos assumidos inalterados de volta ao normal:
Nota: Este comando que foi listado em outro lugar não parece redefinir mais todos os arquivos assumidos inalterados (acredito que ele costumava e o listou anteriormente como uma solução):
Atalhos
Para facilitar a execução dessas tarefas comuns no git, adicione / atualize a seguinte seção de alias
.gitconfig
para o seu usuário (por exemplo,~/.gitconfig
em um sistema * nix ou macOS):fonte
git hidden
, você pode obter o mesmo efeito sem scripts ou aliases de shell, usando o!
seguinte:hidden = ! git ls-files -v | grep '^h' | cut -c3-
--really-refresh
não limpa (ou já não o faz, talvez já tenha limpado) os sinalizadores assumidos sem alteração nos arquivos de índice.Se você deseja desfazer todos os arquivos aplicados, assume-se inalterado com qualquer status, não apenas em cache (o git os marca por caractere em minúsculas), é possível usar o seguinte comando:
git ls-files -v
imprimirá todos os arquivos com seu statusgrep '^[a-z]'
irá filtrar arquivos e selecionar apenas assumir inalteradoscut -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-assume-unchanged
passará todos os caminhos separados por zero caracteregit update-index --no-assume-unchanged
para desfazerfonte
Adicionando à
@adardesign
resposta da, se você deseja redefinir todos os arquivos que foram adicionados àassume-unchanged
lista deno-assume-unchanged
uma só vez, você pode fazer o seguinte:Isso apenas retira os dois caracteres de saída do grep
"h "
, e então|| true
evita qualquer espaço que possa estar presente nos nomes dos arquivos e, finalmente , evita que o comando seja encerrado prematuramente, caso alguns arquivos no loop apresentem erros.fonte
Se você estiver usando extensões Git , siga as etapas abaixo:
Você terminou.
fonte
Nada aqui que não seja coberto. Mas gostaria de adicionar meus 2 centavos. Às vezes, eu executo uma compilação e ela altera muitos arquivos e, em seguida, quero trabalhar em algo, portanto esse comando realmente me ajuda muito.
git update-index --assume-unchanged `git status | grep modified | sed 's|modified:||g'| xargs`
Espero que alguém ache útil também.
fonte
.gitignore
para ignorar seus artefatos de construção..gitignore
mas isso é, às vezes, na minha experiência não é suficiente. Mas eu entendo o contexto em que você está dizendo isso.Nenhuma das soluções funcionou para mim no Windows - parece usar capital
H
em vezh
do status do arquivo e o comando grep requer um sinal de intercalação extra, pois^
também representa o início da linha e nega o próximo caractere.Solução Windows
git ls-files -v | grep '^^H'
para listar todos os arquivos não armazenados em cachegit ls-files -v | grep '^^H' | cut -c 3- | tr '\012' '\000' | xargs -0 git update-index --no-skip-worktree
para desfazer os arquivos pulando todos os arquivos que foram feitos viaupdate-index --skip-worktree
git ls-files -v | grep '^^H]' | cut -c 3- | tr '\012' '\000' | xargs -0 git update-index --no-assume-unchanged
para desfazer os arquivos pulando todos os arquivos que foram feitos viaupdate-index --assume-unchanged
git ls-files -v | grep '^^H'
para listar novamente todos os arquivos não armazenados em cache e verificar se os comandos acima funcionaram - isso agora não deve retornar nadafonte
Se você estiver usando o eclipse, poderá achar útil o seguinte:
fonte