Saturday 24 June 2017

Git Mark File As Binário Opções


Git geralmente adivinha corretamente se um blob contém texto ou dados binários examinando o início do conteúdo. No entanto, às vezes você pode querer substituir sua decisão, seja porque um blob contém dados binários mais tarde no arquivo, ou porque o conteúdo, embora tecnicamente composto de caracteres de texto, é opaco para um leitor humano. Por exemplo, muitos arquivos postscript contêm apenas caracteres ascii, mas produzem diffs barulhento e sem sentido. A maneira mais simples de marcar um arquivo como binário é anular o atributo diff no arquivo. gitattributes: Isso fará com que o git gere arquivos binários diferentes (ou um patch binário, se os patches binários estiverem habilitados) em vez de um diff normal. Em resumo: especifique - diff em. gitattributes. Respondeu Dec 18 11 at 16:59 diff apenas controla se git tenta mostrar uma diferença textual para o arquivo, ele não é o atributo que controla a conversão de terminação de linha. Texto é o atributo correto. Ndash Charles Bailey 18 de dezembro às 17:04 Enquanto - texto em. gitattributes não funcionou, respondeu 30 de maio às 18:44 Binário é uma abreviação para - crlf - diff ndash dtech 20 de dezembro às 15:38 Qual é a diferença entre Este e - texto. Ndash Flimm May 8 15 at 14:32 Sua resposta 2017 Stack Exchange, IncOut da caixa, git pode facilmente adicionar arquivos binários ao seu índice, e também armazená-los de uma forma eficiente, a menos que você faça atualizações freqüentes em grandes arquivos uncompressable. Os problemas começam quando git precisa gerar diffs e mescla: git não pode gerar diffs significativos, ou mesclar arquivos binários de qualquer forma que poderia fazer sentido. Assim, todas as fusões, rebases ou cherrypicks envolvendo uma alteração em um arquivo binário envolverão você a fazer uma resolução de conflito manual nesse arquivo binário. Você precisa decidir se as mudanças de arquivos binários são raras o suficiente para que você possa viver com o trabalho manual extra que eles causam no fluxo de trabalho normal do git envolvendo fusões, rebases, cherrypicks. Resposta Eu não sei de todas as ferramentas que tentam armazenar diffs de arquivos binários para controle de versão, mas vale a pena notar que Git doesnt fazer isso mesmo para arquivos de texto. Git armazena arquivos como blobs, e faz um diff entre eles quando ele precisa. Se você está olhando para fazer o controle de versão em algo como documentos do PhotoshopIllustrator, GridIron Flow pode fazer o truque para você. Se você está tentando mantê-los em sincronia entre as máquinas, Dropbox ou Rsync pode lidar com isso, mas eles arent vai fazer inteligente diff-ing. Respondido Jan 15 11 at 0: 15DESCRIPTION Este comando atualiza o índice usando o atual conteúdo encontrado na árvore de trabalho, para preparar o conteúdo encenado para o próximo commit. Normalmente, adiciona o conteúdo atual de caminhos existentes como um todo, mas com algumas opções também pode ser usado para adicionar conteúdo com apenas parte das alterações feitas nos arquivos de árvore de trabalho aplicados ou remover caminhos que não existem na árvore de trabalho não mais. O índice contém um instantâneo do conteúdo da árvore de trabalho, e é esse instantâneo que é tomado como o conteúdo do commit seguinte. Assim, depois de fazer quaisquer alterações na árvore de trabalho e antes de executar o comando commit, você deve usar o comando add para adicionar quaisquer arquivos novos ou modificados ao índice. Este comando pode ser executado várias vezes antes de um commit. Somente adiciona o conteúdo do (s) arquivo (s) especificado (s) no momento em que o comando add é executado, se você quiser mudanças subseqüentes incluídas no commit seguinte, então você deve executar git add novamente para adicionar o novo conteúdo ao índice. O comando git status pode ser usado para obter um resumo de quais arquivos têm alterações que são encenadas para o próximo commit. O comando git add não irá adicionar arquivos ignorados por padrão. Se quaisquer arquivos ignorados foram explicitamente especificados na linha de comando, git add falhará com uma lista de arquivos ignorados. Arquivos ignorados atingidos por recursão de diretório ou globing de nome de arquivo executado pelo Git (citam seus globs antes do shell) serão silenciosamente ignorados. O comando git add pode ser usado para adicionar arquivos ignorados com a opção - f (force). Consulte git-commit1 para ver formas alternativas de adicionar conteúdo a um commit. Arquivos para adicionar conteúdo. Fileglobs (por exemplo. c) pode ser dado para adicionar todos os arquivos correspondentes. Também pode ser dado um nome de diretório principal (por exemplo dir para adicionar dirfile1 e dirfile2) para atualizar o índice para coincidir com o estado atual do diretório como um todo (por exemplo, especificando dir irá gravar não apenas um arquivo dirfile1 modificado na árvore de trabalho, um Arquivo dirfile2 adicionado à árvore de trabalho, mas também um arquivo dirfile3 removido da árvore de trabalho Observe que as versões mais antigas do Git usado para ignorar arquivos removidos usam a opção --no-all se você quiser adicionar arquivos modificados ou novos, mas ignorar os removidos Don8217t realmente adicionar o arquivo (s), basta mostrar se eles existem andor será ignorado. Permitir a adição de arquivos de outra forma ignorados. Adicione conteúdo modificado na árvore de trabalho interativamente para o índice argumentos caminho opcional pode ser fornecido para limitar a operação de um subconjunto Da árvore de trabalho Consulte o 8220Interativo mode8221 para obter detalhes. Interactivamente escolher hunks de patch entre o índice ea árvore de trabalho e adicioná-los ao índice. Isto dá ao usuário a chance de rever a diferença antes de adicionar conteúdo modificado S para o índice. Isso efetivamente é executado add --interactive. Mas ignora o menu de comando inicial e salta diretamente para o subcomando patch. Veja 8220Interativo mode8221 para detalhes. Abra o diff versus o índice em um editor e deixe o usuário editá-lo. Depois que o editor foi fechado, ajustar os cabeçalhos hunk e aplicar o patch para o índice. A intenção desta opção é escolher e escolher linhas do patch para aplicar, ou mesmo modificar o conteúdo das linhas a serem encenadas. Isso pode ser mais rápido e mais flexível do que usar o seletor interativo hunk. No entanto, é fácil confundir-se e criar um patch que não se aplica ao índice. Consulte EDITAR PATCHES abaixo. Atualize o índice apenas onde ele já tem uma entrada correspondente ltpathspecgt. Isso remove, bem como modifica entradas de índice para coincidir com a árvore de trabalho, mas não adiciona novos arquivos. Se nenhum ltpathspecgt é fornecido quando a opção - u é usada, todos os arquivos rastreados em toda a árvore de trabalho são atualizados (versões antigas do Git usadas para limitar a atualização ao diretório atual e seus subdiretórios). Atualize o índice não somente onde a árvore de trabalho tem um arquivo correspondente a ltpathspecgt, mas também onde o índice já tem uma entrada. Isso adiciona, modifica e remove entradas de índice para coincidir com a árvore de trabalho. Se nenhum ltpathspecgt é dado quando - A opção é usada, todos os arquivos em toda a árvore de trabalho são atualizados (versões antigas do Git usado para limitar a atualização para o diretório atual e seus subdiretórios). Atualize o índice adicionando novos arquivos que são desconhecidos para o índice e arquivos modificados na árvore de trabalho, mas ignorar arquivos que foram removidos da árvore de trabalho. Esta opção é um não-op quando não ltpathspecgt é usado. Esta opção é principalmente para ajudar os usuários que são usados ​​para versões mais antigas do Git, cujo git add ltpathspecgt82308203 foi um sinônimo para git add --no-all ltpathspecgt82308203, ou seja, arquivos ignorados removidos. Grave apenas o fato de que o caminho será adicionado mais tarde. Uma entrada para o caminho é colocada no índice sem conteúdo. Isso é útil para, entre outras coisas, mostrar o conteúdo não estragado de tais arquivos com git diff e enviá-los com git commit - a. Don8217t adicione o (s) arquivo (s), mas apenas atualize suas informações stat () no índice. Se alguns arquivos não puderam ser adicionados por causa de erros indexando-os, não interromper a operação, mas continuar adicionando os outros. O comando ainda deve sair com status diferente de zero. A variável de configuração add. ignoreErrors pode ser definida como true para tornar esse o comportamento padrão. Esta opção só pode ser usada em conjunto com --dry-run. Usando esta opção o usuário pode verificar se qualquer um dos arquivos dado seria ignorado, não importa se eles já estão presentes na árvore de trabalho ou não. Substituir o bit executável dos arquivos adicionados. O bit executável só é alterado no índice, os arquivos no disco são deixados inalterados. Esta opção pode ser usada para separar as opções de linha de comando da lista de arquivos (útil quando os nomes de arquivos podem ser confundidos com opções de linha de comando). Configuração A variável de configuração opcional core. excludesFile indica um caminho para um arquivo contendo padrões de nomes de arquivos a serem excluídos do git-add, semelhante ao GITDIRinfoexclude. Padrões no arquivo de exclusão são usados ​​além daqueles em infoexclude. Veja gitignore5. Adiciona conteúdo de todos os arquivos. txt em Diretório Documentação e seus subdiretórios: Observe que o asterisco é citado do shell neste exemplo, isso permite que o comando inclua os arquivos de subdiretórios do diretório Documentação. Considera a adição de conteúdo de todos os scripts git-.sh: Como este exemplo permite que o shell expanda o asterisco (ou seja, você está listando os arquivos explicitamente), ele não considera subdirgit-foo. sh. Modo interativo Quando o comando entra no modo interativo, ele mostra a saída do subcomando de status e entra em seu loop de comando interativo. O loop de comando mostra a lista de subcomandos disponíveis, e dá um prompt What nowgt. Em geral, quando o prompt termina com um único gt. Você pode escolher apenas uma das opções dadas e retornar tipo, como este: Você também poderia dizer s ou sta ou status acima, desde que a escolha é única. O loop de comando principal tem 6 subcomandos (mais ajuda e sair). Isso mostra a mudança entre HEAD e índice (ou seja, o que será confirmado se você diz git commit), e entre arquivos de árvore de índice e de trabalho (isto é, o que você poderia fazer antes de git commit usando git add) para cada caminho. Uma saída de exemplo tem a seguinte aparência: Mostra que foo. png tem diferenças de HEAD (mas isso é binário para que a contagem de linha não possa ser mostrada) e não há diferença entre a cópia indexada ea versão da árvore de trabalho Diferente, binário teria sido mostrado em lugar de nada). O outro arquivo, git-add interactive. perl, tem 403 linhas adicionadas e 35 linhas excluídas se você confirmar o que está no índice, mas o arquivo da árvore de trabalho tem outras modificações (uma adição e uma exclusão). Isso mostra as informações de status e emite um prompt Updategtgt. Quando o prompt termina com double gtgt. Você pode fazer mais de uma seleção, concatenada com espaço em branco ou vírgula. Também você pode dizer intervalos. Por exemplo. 2-5 7,9 para escolher 2,3,4,5,7,9 da lista. Se o segundo número de um intervalo é omitido, todos os patches restantes são tomados. Por exemplo. 7- para escolher 7,8,9 da lista. Você pode dizer para escolher tudo. O que você escolheu é destacado com. Como este: Para remover a seleção, prefixe a entrada com - assim: Depois de fazer a seleção, responda com uma linha vazia para encenar o conteúdo dos arquivos de árvore de trabalho para os caminhos selecionados no índice. Isso tem uma interface muito semelhante para atualizar. E as informações encenadas para caminhos selecionados são revertidas para a versão HEAD. Reverting novos caminhos torna-los untracked. Isso tem uma interface muito semelhante para atualizar e reverter. E permite adicionar caminhos não acompanhados ao índice. Isso permite que você escolha um caminho fora de um status como seleção. Depois de escolher o caminho, ele apresenta a diferença entre o índice e o arquivo de árvore de trabalho e pergunta se você deseja iniciar a mudança de cada pedaço. Você pode selecionar uma das seguintes opções e digitar return: Depois de decidir o destino de todos os hunks, se houver qualquer hunk que foi escolhido, o índice é atualizado com os hunks selecionados. Você pode omitir ter que digitar return aqui, configurando a variável de configuração interactive. singleKey para true. Isso permite que você analise o que será comprometido (ou seja, entre HEAD e índice). EDITANDO PATCHES Invocando o git add - e ou selecionando e do seletor hunk interativo abrirá um patch em seu editor depois que o editor sai, o resultado é aplicado ao índice. Você está livre para fazer alterações arbitrárias no patch, mas observe que algumas alterações podem ter resultados confusos ou até mesmo resultar em um patch que não pode ser aplicado. Se você quiser abortar a operação inteiramente (isto é, nada de estágio no índice), basta excluir todas as linhas do patch. A lista abaixo descreve algumas coisas comuns que você pode ver em um patch e quais operações de edição fazem sentido nelas. O conteúdo adicionado é representado por linhas que começam por 43. Você pode evitar a montagem de quaisquer linhas de adição, excluindo-as. O conteúdo removido é representado por linhas que começam com -. Você pode evitar a realização de sua remoção convertendo o - para um (espaço). O conteúdo modificado é representado por linhas (removendo o conteúdo antigo) seguido de 43 linhas (adicionando o conteúdo de substituição). Você pode evitar o teste da modificação convertendo linhas para e removendo 43 linhas. Tenha cuidado para que a modificação de apenas metade do par seja susceptível de introduzir alterações confusas no índice. Existem também operações mais complexas que podem ser realizadas. Mas cuidado porque o patch é aplicado apenas ao índice e não à árvore de trabalho, a árvore de trabalho aparecerá para desfazer a alteração no índice. Por exemplo, a introdução de uma nova linha no índice que não está nem na HEAD nem na árvore de trabalho encenará a nova linha para commit, mas a linha aparecerá para ser revertida na árvore de trabalho. Evite usar essas construções, ou faça isso com extrema cautela. Remoção de conteúdo não afetado O conteúdo que não difere entre o índice ea árvore de trabalho pode ser mostrado em linhas de contexto, começando com um (espaço). Você pode organizar linhas de contexto para remoção convertendo o espaço em um -. O arquivo de árvore de trabalho resultante aparecerá para voltar a adicionar o conteúdo. Modificar o conteúdo existente Também é possível modificar as linhas de contexto colocando-as para remoção (convertendo para -) e adicionando uma linha 43 com o novo conteúdo. Da mesma forma, pode-se modificar 43 linhas para adições existentes ou modificações. Em todos os casos, a nova modificação aparecerá revertida na árvore de trabalho. Você também pode adicionar novo conteúdo que não existe no patch simplesmente adicionar novas linhas, cada um começando com 43. A adição aparecerá revertida na árvore de trabalho. Há também várias operações que devem ser evitadas inteiramente, pois tornam o patch impossível de aplicar: adicionar linhas de contexto () ou remoção (-) excluindo linhas de contexto ou de remoção que modificam o conteúdo de linhas de contexto ou de remoção

No comments:

Post a Comment