git ignorar vs. excluir vs. assumir inalterado

Eu li os documentos sobre isso várias vezes e ainda não entendi completamente as diferenças entre esses diferentes comandos. Talvez seja só eu, mas a documentação pode ser mais lúcida:

http://git-scm.com/docs/gitignore

https://help.github.com/articles/ignoring-files

Além disso, muitos comentários sobre esse assunto parecem usar as palavras "indexado", "comprometido", "rastreado" de maneira um tanto vaga, o que torna as diferenças entre esses três menos claras.

Meu entendimento atual (reconhecidamente limitado):

Arquivos correspondidos.gitignore não será rastreado no futuro. (Embora eles possam ter sido rastreados anteriormente.) Isso significa que eles nunca aparecerão em um futurogit status lista como alterada.No entanto, alterações futuras ainda serão sincronizadas com repositórios remotos. Em outras palavras, os arquivos ainda estão "indexados", mas não são "rastreados". Porque um.gitignore Se o arquivo estiver no diretório do projeto, o próprio arquivo pode ser versionado.

Arquivos correspondidos.git/info/exclude também não será "rastreado". Além disso, esses arquivos nunca serão sincronizados remotamente e, portanto, nunca serão vistos de nenhuma forma por outros usuários. Esses arquivos devem ser arquivos específicos para o editor ou fluxo de trabalho de um único usuário. Porque está no.git diretório, oexclude o arquivo não pode ser versionado.

Arquivos que tiveramassume-unchanged correr com eles também não aparecem emgit status ougit diff. Isso parece semelhante aexclude, pois esses arquivos não são "indexados" nem "rastreados". No entanto, a última versão do arquivo a ser confirmada antesassume-unchanged permanecerá visível para todos os usuários no repositório.

Minhas perguntas:

A interpretação acima está correta? Por favor me corrija.

Se um arquivo já estiver em uma confirmação, qual é a diferença funcional entre correspondê-lo em.exclude e correndoassume-unchanged nele? Por que um prefere uma abordagem à outra?

Meu caso de uso básico é que quero evitar classificar as diferenças nos arquivos compilados, mas ainda quero que esses arquivos compilados sejam sincronizados com os arquivos de origem. Will agitignoreo arquivo ainda será enviado? Caso contrário, como gerenciar a implantação final dos arquivos compilados?

Agradecemos antecipadamente por qualquer ajuda.

questionAnswers(4)

yourAnswerToTheQuestion