Muitas pessoas aconselham você a usar git update-index --assume-unchanged. De fato, essa pode ser uma boa solução, mas apenas no curto prazo.
O que você provavelmente vai querer fazer é esta: git update-index --skip-worktree.
(A terceira opção, que você provavelmente não deseja é:. git rm --cachedEle manterá seu arquivo local, mas será marcado como removido do repositório remoto.)
Diferença entre as duas primeiras opções?
assume-unchangedé temporariamente permitir ocultar modificações de um arquivo. Se você deseja ocultar as modificações feitas em um arquivo, modifique o arquivo e faça check-out em outra ramificação, será necessário usar as no-assume-unchangedmodificações ocultas provavelmente feitas.
skip-worktree irá segui-lo seja qual for o ramo que fizer o checkout, com suas modificações!
Caso de uso de assume-unchanged
Ele assume que esse arquivo não deve ser modificado e fornece uma saída mais limpa ao fazê-lo git status. Mas ao fazer o check-out para outra ramificação, é necessário redefinir o sinalizador e confirmar ou ocultar as alterações antes disso. Se você puxar com esta opção ativada, precisará resolver conflitos e o git não será mesclado automaticamente. Na verdade, ele apenas oculta modificações ( git statusnão mostra os arquivos sinalizados).
Gosto de usá-lo quando quero parar de rastrear alterações por um tempo + confirmar um monte de arquivos ( git commit -a) relacionados à mesma modificação.
Caso de uso de skip-worktree
Você tem uma classe de configuração contendo parâmetros (por exemplo, incluindo senhas) que seus amigos precisam alterar de acordo com a configuração deles.
- 1: Crie uma primeira versão desta classe, preencha os campos que você pode preencher e deixe outros vazios / nulos.
- 2: Confirme e envie-o para o servidor remoto.
- 3:
git update-index --skip-worktree MySetupClass.java
- 4: Atualize sua classe de configuração com seus próprios parâmetros.
- 5: Volte a trabalhar em outra funcionalidade.
As modificações que você fizer seguirão você em qualquer ramo. Aviso: se seus amigos também quiserem modificar essa classe, eles precisam ter a mesma configuração; caso contrário, suas modificações serão enviadas ao repositório remoto. Ao puxar, a versão remota do arquivo deve substituir a sua.
PS: faça um ou outro, mas não ambos, pois você terá efeitos colaterais indesejáveis. Se você quiser tentar outro sinalizador, desabilite o último primeiro.
.csprojarquivo, que é uma parte muito importante de qualquer projeto. Alterações no.csproj.userarquivo ou quaisquer.Publish.XMLarquivos eu posso totalmente entender não rastreamento, mas estou intrigado por que motivo você não gostaria de acompanhar o.csproj...