Git é um dos sistemas de controle de versão distribuídos mais amplamente utilizados, descritos pelos desenvolvedores em todo o mundo como o serviço VCS número um. Ele é executado apenas a partir do terminal, mas vários front-ends estão disponíveis para download.
É um aplicativo de sistema de controle de versão livre e aberto que pode lidar com projetos grandes e pequenos com a máxima eficiência e velocidade. O programa pode ser facilmente descrito como pequeno, rápido e distribuído.
Opções de linha de comando
O programa vem com um punhado de comandos que podem ser facilmente lembrados por qualquer pessoa desde o início. Todas as operações são realizadas localmente e foi projetada para funcionar no kernel do Linux.
Os comandos incluídos são adicionados, bisectos, ramificações, checkout, clone, commit, diff, fetch, grep, init, log, fusion, mv, pull, push, rebase, reset, rm, show, status e tag. Você pode facilmente aprender o que cada comando faz executando o comando git --help de uma janela de terminal.
Recursos em resumo
Ao usar o Git, os usuários poderão adicionar arquivos, filtrar filiais ou caminhos, repositórios de clones, criar repostórios Git vazios, juntar-se a vários historiais de desenvolvimento, exibir o status da árvore de trabalho, registrar alterações, bem como criar, listar ou apague ramos.
Além disso, o aplicativo permite que os usuários vejam mudanças entre compromissos e árvores de trabalho, imprima linhas que combinam com um padrão, visualize registros de confirmação, baixe refs e objetos, renomeie ou mova arquivos, links simbólicos e diretórios, atualize refs remotos e remova arquivos de uma árvore de trabalho.
Vários front-ends gráficos existem
Mesmo que seja um software de linha de comando único, várias interfaces gráficas de usuário (GUIs) estão disponíveis, incluindo git-cola, SmartGit, GitEye, giggle e gitg. O projeto supera as utilidades SCM (Gerenciamento de Configuração de Software), como CVS, Subversion, ClearCase e Perforce, com ramificações locais baratas, múltiplos fluxos de trabalho e áreas de teste convenientes.
Fundo
Resumindo, o Git é um sistema de controle de versão gratuito que apresenta um desempenho rápido, é fácil de aprender e tem uma pegada muito pequena. Com o Git, você pode fazer mudanças de contexto sem fricção, linhas de código baseadas em função, fluxo de trabalho baseado em recursos e experimentação descartavel.
O que é novo nesta versão:
- Uma função auxiliar para ler uma única linha inteira em strbuf erroneamente disparado erro OOM em EOF sob certas condições, que foi corrigido.
- Além de "cc: # cruft", "cc: a@dd.re.ss # cruft & quot; foi ensinado a "enviar-e-mail git" como uma maneira válida de dizer que precisa enviar uma cópia de carbono na seção do trailer.
- Corrigir regressão para "gitk - biselar" por uma atualização recente.
- Ao contrário de "git commit-tree & lt; arquivo "," git commit-tree -F arquivo & quot; não aprovou o conteúdo do arquivo literalmente e, em vez disso, completou uma linha incompleta no final, se existir. Este último foi atualizado para corresponder ao comportamento do primeiro.
- & quot; git archive & quot ;, especialmente quando usado com pathspec, armazenou um diretório vazio em sua saída, mesmo que o próprio Git nunca o faça. Isso foi corrigido.
- A prova de erros da API que acontece também esmaga avisos do GCC.
- & quot; git gc & quot; tenta evitar executar duas instâncias ao mesmo tempo lendo e escrevendo pid / host de e para um arquivo de bloqueio; costumava usar um formato fscanf () incorreto ao ler, que foi corrigido.
- O teste foi ensinado que não gostamos de "echo -e".
- Código cmp.std.c nitpick.
- "git descrevem -match" Aprendeu a ter vários padrões na série v2.13, mas o recurso ignorou os padrões após o primeiro e não funcionou de forma alguma. Isso foi corrigido.
- "git cat-file --textconv & quot; começou a segmentar recentemente, que foi corrigido.
- O padrão interno para detectar o & quot; cabeçalho da função & quot; Para o HTML não combinou elementos sem quaisquer atributos, que foram corrigidos.
- & quot; git mailinfo & quot; estava solto na decodificação citada imprimível e produziu lixo quando as duas letras após o sinal de igualdade não são hexadecimais. Isso foi corrigido.
- A documentação para '-X' para fusões foi escrita equivocadamente para sugerir que '& ss; s theirs & quot; existe, o que não é o caso.
- Soletre o nome do nosso sistema como "Git" na saída do script request-pull.
- Correções para um punhado de problemas de acesso à memória identificados por valgrind.
- Backports um equivalente moral de 2015 corrigir a emulação de votação do gnulib a montante para corrigir quebras ocasionais no HPE NonStop.
- No & quot; - format = ... & quot; opção do "git for-each-ref" quot; comando (e seus amigos, isto é, o modo de listagem de "ramificação / tag git"), "% (átomo:)" (por exemplo, "% (refname:)", "% (body:)" usado para erro para fora. Em vez disso, trate-os como se o cólon e uma seqüência vazia que o seguisse não estivessem lá.
- Usuários com "color.ui = always" quot; em sua configuração foram quebrados por uma mudança recente que fez com que os comandos de encanamento os atinjam como o patch criado internamente por "git add -p" foram coloridos (heh) e tornaram-se inutilizáveis. Isso foi corrigido.
- "git branch -M a b" enquanto em um ramo que não está completamente relacionado com nenhum dos ramos, um ou um ramo b se comportaram mal quando o campo de trabalho múltiplo estava em uso. Isso foi corrigido.
- & quot; git fast-export & quot; com -M / -C opção emitida & quot; copy & quot; instrução em um caminho que é modificado simultaneamente, o que estava incorreto.
- O comando do ponto de verificação "git fast-import & quot; não liberou atualizações para refs e marcas, a menos que pelo menos um objeto tenha sido criado desde o último ponto de controle, que foi corrigido, pois essas coisas podem acontecer sem que um novo objeto seja criado.
- Os scripts para conduzir TravisCI foram reorganizados e, em seguida, uma otimização para evitar ciclos de gastos em um ramo cuja dica é marcada foi implementada.
- & quot; git fetch: & quot; permite um nome de objeto no lado quando o outro lado aceita tal pedido desde o Git v2.5, mas a documentação foi deixada firme.
- Uma regressão em 2.11 que criou o código para ler a lista de lojas de objetos alternativos superar o final da string foi corrigida.
O que é novo na versão 2.15.1:
- Uma função auxiliar para ler uma única linha inteira em strbuf erroneamente disparado erro OOM em EOF sob certas condições, que foi corrigido.
- Além de "cc: # cruft", "cc: a@dd.re.ss # cruft & quot; foi ensinado a "enviar-e-mail git" como uma maneira válida de dizer que precisa enviar uma cópia de carbono na seção do trailer.
- Corrigir regressão para "gitk - biselar" por uma atualização recente.
- Ao contrário de "git commit-tree & lt; arquivo "," git commit-tree -F arquivo & quot; não aprovou o conteúdo do arquivo literalmente e, em vez disso, completou uma linha incompleta no final, se existir. Este último foi atualizado para corresponder ao comportamento do primeiro.
- & quot; git archive & quot ;, especialmente quando usado com pathspec, armazenou um diretório vazio em sua saída, mesmo que o próprio Git nunca o faça. Isso foi corrigido.
- A prova de erros da API que acontece também esmaga avisos do GCC.
- & quot; git gc & quot; tenta evitar executar duas instâncias ao mesmo tempo lendo e escrevendo pid / host de e para um arquivo de bloqueio; costumava usar um formato fscanf () incorreto ao ler, que foi corrigido.
- O teste foi ensinado que não gostamos de "echo -e".
- Código cmp.std.c nitpick.
- "git descrevem -match" Aprendeu a ter vários padrões na série v2.13, mas o recurso ignorou os padrões após o primeiro e não funcionou de forma alguma. Isso foi corrigido.
- "git cat-file --textconv & quot; começou a segmentar recentemente, que foi corrigido.
- O padrão interno para detectar o & quot; cabeçalho da função & quot; Para o HTML não combinou elementos sem quaisquer atributos, que foram corrigidos.
- & quot; git mailinfo & quot; estava solto na decodificação citada imprimível e produziu lixo quando as duas letras após o sinal de igualdade não são hexadecimais. Isso foi corrigido.
- A documentação para '-X' para fusões foi escrita equivocadamente para sugerir que '& ss; s theirs & quot; existe, o que não é o caso.
- Soletre o nome do nosso sistema como "Git" na saída do script request-pull.
- Correções para um punhado de problemas de acesso à memória identificados por valgrind.
- Backports um equivalente moral de 2015 corrigir a emulação de votação do gnulib a montante para corrigir quebras ocasionais no HPE NonStop.
- No & quot; - format = ... & quot; opção do "git for-each-ref" quot; comando (e seus amigos, isto é, o modo de listagem de "ramificação / tag git"), "% (átomo:)" (por exemplo, "% (refname:)", "% (body:)" usado para erro para fora. Em vez disso, trate-os como se o cólon e uma seqüência vazia que o seguisse não estivessem lá.
- Usuários com "color.ui = always" quot; em sua configuração foram quebrados por uma mudança recente que fez com que os comandos de encanamento os atinjam como o patch criado internamente por "git add -p" foram coloridos (heh) e tornaram-se inutilizáveis. Isso foi corrigido.
- "git branch -M a b" enquanto em um ramo que não está completamente relacionado com nenhum dos ramos, um ou um ramo b se comportaram mal quando o campo de trabalho múltiplo estava em uso. Isso foi corrigido.
- & quot; git fast-export & quot; com -M / -C opção emitida & quot; copy & quot; instrução em um caminho que é modificado simultaneamente, o que estava incorreto.
- O comando do ponto de verificação "git fast-import & quot; não liberou atualizações para refs e marcas, a menos que pelo menos um objeto tenha sido criado desde o último ponto de controle, que foi corrigido, pois essas coisas podem acontecer sem que um novo objeto seja criado.
- Os scripts para conduzir TravisCI foram reorganizados e, em seguida, uma otimização para evitar ciclos de gastos em um ramo cuja dica é marcada foi implementada.
- & quot; git fetch: & quot; permite um nome de objeto no lado quando o outro lado aceita tal pedido desde o Git v2.5, mas a documentação foi deixada firme.
- Uma regressão em 2.11 que criou o código para ler a lista de lojas de objetos alternativos superar o final da string foi corrigida.
O que é novo na versão 2.15.0:
- Uma função auxiliar para ler uma única linha inteira em strbuf erroneamente disparado erro OOM em EOF sob certas condições, que foi corrigido.
- Além de "cc: # cruft", "cc: a@dd.re.ss # cruft & quot; foi ensinado a "enviar-e-mail git" como uma maneira válida de dizer que precisa enviar uma cópia de carbono na seção do trailer.
- Corrigir regressão para "gitk - biselar" por uma atualização recente.
- Ao contrário de "git commit-tree & lt; arquivo "," git commit-tree -F arquivo & quot; não aprovou o conteúdo do arquivo literalmente e, em vez disso, completou uma linha incompleta no final, se existir. Este último foi atualizado para corresponder ao comportamento do primeiro.
- & quot; git archive & quot ;, especialmente quando usado com pathspec, armazenou um diretório vazio em sua saída, mesmo que o próprio Git nunca o faça. Isso foi corrigido.
- A prova de erros da API que acontece também esmaga avisos do GCC.
- & quot; git gc & quot; tenta evitar executar duas instâncias ao mesmo tempo lendo e escrevendo pid / host de e para um arquivo de bloqueio; costumava usar um formato fscanf () incorreto ao ler, que foi corrigido.
- O teste foi ensinado que não gostamos de "echo -e".
- Código cmp.std.c nitpick.
- "git descrevem -match" Aprendeu a ter vários padrões na série v2.13, mas o recurso ignorou os padrões após o primeiro e não funcionou de forma alguma. Isso foi corrigido.
- "git cat-file --textconv & quot; começou a segmentar recentemente, que foi corrigido.
- O padrão interno para detectar o & quot; cabeçalho da função & quot; Para o HTML não combinou elementos sem quaisquer atributos, que foram corrigidos.
- & quot; git mailinfo & quot; estava solto na decodificação citada imprimível e produziu lixo quando as duas letras após o sinal de igualdade não são hexadecimais. Isso foi corrigido.
- A documentação para '-X' para fusões foi escrita equivocadamente para sugerir que '& ss; s theirs & quot; existe, o que não é o caso.
- Soletre o nome do nosso sistema como "Git" na saída do script request-pull.
- Correções para um punhado de problemas de acesso à memória identificados por valgrind.
- Backports um equivalente moral de 2015 corrigir a emulação de votação do gnulib a montante para corrigir quebras ocasionais no HPE NonStop.
- No & quot; - format = ... & quot; opção do "git for-each-ref" quot; comando (e seus amigos, isto é, o modo de listagem de "ramificação / tag git"), "% (átomo:)" (por exemplo, "% (refname:)", "% (body:)" usado para erro para fora. Em vez disso, trate-os como se o cólon e uma seqüência vazia que o seguisse não estivessem lá.
- Usuários com "color.ui = always" quot; em sua configuração foram quebrados por uma mudança recente que fez com que os comandos de encanamento os atinjam como o patch criado internamente por "git add -p" foram coloridos (heh) e tornaram-se inutilizáveis. Isso foi corrigido.
- "git branch -M a b" enquanto em um ramo que não está completamente relacionado com nenhum dos ramos, um ou um ramo b se comportaram mal quando o campo de trabalho múltiplo estava em uso. Isso foi corrigido.
- & quot; git fast-export & quot; com -M / -C opção emitida & quot; copy & quot; instrução em um caminho que é modificado simultaneamente, o que estava incorreto.
- O comando do ponto de verificação "git fast-import & quot; não liberou atualizações para refs e marcas, a menos que pelo menos um objeto tenha sido criado desde o último ponto de controle, que foi corrigido, pois essas coisas podem acontecer sem que um novo objeto seja criado.
- Os scripts para conduzir TravisCI foram reorganizados e, em seguida, uma otimização para evitar ciclos de gastos em um ramo cuja dica é marcada foi implementada.
- & quot; git fetch: & quot; permite um nome de objeto no lado quando o outro lado aceita tal pedido desde o Git v2.5, mas a documentação foi deixada firme.
- Uma regressão em 2.11 que criou o código para ler a lista de lojas de objetos alternativos superar o final da string foi corrigida.
O que é novo na versão 2.14.1:
- Esta versão avança a correção para o & quot; ssh: //..." URL do Git v2.7.6
O que é novo na versão 2.9.3:
- * Uma função auxiliar que leva o conteúdo de um objeto de confirmação e descobre que a linha de assunto não ignora as linhas em branco, como é geralmente feito por outros códigos. Faça com que ignore as linhas em branco para corresponder.
- O Git não sabe o que o conteúdo do índice deve ser para um caminho adicionado com "git add -N" ainda assim, então "git grep --cached" não deve mostrar hits (ou mostrar falta de hits, com -L ) em tal caminho, mas essa lógica não se aplica a "git grep", ou seja, pesquisando nos arquivos da árvore de trabalho. Mas fizemos isso por engano, que foi corrigido.
- "git rebase -i --autostash" não restaurou a alteração automática quando a operação foi interrompida.
- "git commit --amend --allow-empty-message -S" para uma confirmação sem qualquer mensagem corpo poderia ter identificado erroneamente onde o cabeçalho do objeto de compromisso termina.
- Mais atualizações de marcação para seqüências de caracteres de tipos que devem digitar literalmente pelo usuário final com fonte de largura fixa.
- Durante muito tempo, realizamos um comentário no código que dizia que nossa saída colorida funcionaria somente quando usamos fprintf / fputs no Windows, o que não é mais o caso nos últimos anos.
- "gc.autoPackLimit" quando configurado para 1 não deve desencadear um reembalamento quando há apenas um pacote, mas o código contou mal e fez isso.
- Uma parte de "git am" tinha uma função de ajudante estranho que chamava coisas de "seu" ao invés de chamar o que temos "nosso", que não era neutro em termos de gênero e também inconsistente com o resto do sistema onde As coisas externas são geralmente chamadas de "deles", em contraste com o "nosso".
- O framework de teste aprendeu um novo helper test_match_signal para verificar que um código de saída seja morto por um sinal esperado.
- "git blame -M" perdeu uma única linha que foi movida para dentro do arquivo.
- Corrija os códigos de código introduzidos recentemente que estão envolvidos em operações de submódulos paralelos, que desistiram de ler muito cedo e poderiam ter desperdiçado CPU enquanto tentavam escrever sob uma condição de caixa de canto.
- "git grep -i" foi ensinado a dobrar o caso em locais não-ascii corretamente.
- Um teste que incondicionalmente usou "mktemp" aprendeu que o comando não está necessariamente disponível em todos os lugares.
- "git blame file" permitiu a linhagem de linhas no conteúdo não comprometido de "arquivo" a ser inspecionado, mas recusou quando o "arquivo" não apareceu no commit atual. Quando o "arquivo" foi criado renomeando um arquivo existente (mas a alteração não foi confirmada), esta restrição foi desnecessariamente apertada.
- "git add -N dir / file & amp; & amp; git write-tree" produziu uma árvore incorreta quando existem outros caminhos no mesmo diretório que classifica após "arquivo".
- "git fetch http: // user: pass @ host / repo ..." esfregou a parte userinfo, mas "git push" não.
- Um erro antigo que causou o comportamento "git diff - ignore-space-at-eol" foi corrigido.
- "git notes merge" tinha um código para ver se existe um caminho (e falha se ele faz) e, em seguida, abra o caminho para escrever (quando não). Substitua-o por aberto com O_EXCL.
- "git pack-objects" e "git index-pack" operam principalmente com off_t ao falar sobre o deslocamento de objetos em um pacote, mas havia um punhado de lugares que usavam "unsigned long" para manter esse valor, levando para um truncamento não solicitado.
- A atualização recente para "git daemon" tenta habilitar o nível de soquete KEEPALIVE, mas quando é gerado via inetd, o descritor de arquivo de entrada padrão pode não estar necessariamente conectado a um soquete. Suprima um erro ENOTSOCK de setsockopt ().
- FreeBSD recente deixou de fazer perl disponível em / usr / bin / perl; altere o padrão do caminho embutido para / usr / local / bin / perl em versões FreeBSD não muito antigas.
- "git status" aprendeu a sugerir "fundir - abortar" durante uma fusão em conflito, assim como ele já sugere "rebase - abort" durante um rebase em conflito.
- As fontes .c / .h estão marcadas como tal em nosso arquivo .gitattributes para que "git diff -W" e amigos funcionem melhor.
- O teste gerado por autoconf existente para a necessidade de ligação com a biblioteca pthread não verificou todas as funções das bibliotecas pthread; FreeBSD recente tem algumas funções em libc, mas não em outros, e pensamos erroneamente que a ligação com libc é suficiente quando não é.
- Permitir testes de daemon http nos testes Travis CI.
- Os usuários da função parse_options_concat () API precisam alocar espaços extras antecipadamente e preenchê-los com OPT_END () quando quiserem decidir o conjunto de opções suportadas de forma dinâmica, o que torna o código propenso a erros e difícil de ler. Isso foi corrigido ajustando a API para alocar e retornar uma nova cópia da matriz de "estrutura".
- O uso de strbuf em "git rm" para criar o nome do arquivo para remover foi um pouco subóptimo, que foi corrigido.
- "git commit --help" disse que "- não verifique" é apenas ignorar o gancho de pré-confirmação e falhou ao dizer que também ignorou o gancho commit-msg.
- "git merge" no Git v2.9 foi ensinado a proibir a fusão de linhas de histórico não relacionadas por padrão, mas esse é exatamente o tipo de coisa "-rejoin" de "subidireio git" (em contrib /) quer fazer. "git subtree" foi ensinado a usar a opção "--allow-unrelated-histories" para substituir o padrão.
- O procedimento de compilação para "git persistent-https" helper (em contrib /) foi atualizado para que ele possa ser construído com versões mais recentes do Go.
- Existe uma otimização usada em "git diff $ treeA $ treeB" para emprestar uma cópia já verificada na árvore de trabalho quando se sabe que é o mesmo que o blob sendo comparado, esperando que o open / mmap de tal um arquivo é mais rápido do que lê-lo na loja de objetos, o que envolve inflar e aplicar o delta. Isso, no entanto, chutou, mesmo quando a cópia verificada precisa passar pela conversão para conversão (incluindo o filtro limpo), o que derrota o ponto inteiro da otimização. A otimização foi desabilitada quando a conversão é necessária.
- "git -c grep.patternType = log estendido --basic-regexp" mal comportado porque a API interna para acessar a maquinaria grep não foi projetada bem.
- A porta do Windows estava falhando em alguns testes em t4130, devido à falta de inum nos valores retornados pela sua emulação lstat (2).
- Os caracteres no rótulo mostrado para tags / refs para confirmações na saída "gitweb" são agora corretamente escapados para a saída HTML adequada.
- O FreeBSD pode mentir quando solicitado mtime de um diretório, o que fez o código de cache não rastreado voltar a um caminho lento, o que, por sua vez, causou testes em t7063 para falhar porque queria verificar o comportamento do caminho rápido.
- Avisos do compilador Squelch para a biblioteca netmalloc (em compat /).
- A documentação da API para hashmap não estava clara se hashmap_entry puder ser descartado com segurança sem qualquer outra consideração. Indique que é seguro fazê-lo.
- A reescrita não tão recente de "git am" que começou a fazer chamadas internas no mecanismo de compromissos teve uma regressão não intencional, na medida em que, independentemente de quantos segundos demorou para aplicar muitos patches, o timestamp resultante do comitente para os compromissos resultantes eram todos iguais.
- "git difftool ..." iniciado em um subdiretório não conseguiu interpretar os caminhos relativos a esse diretório, que foi corrigido.
O que é novo na versão 2.9.1:
- Quando "git daemon" é executado sem - [init-] timeout especificado, uma conexão de um cliente que silenciosamente está desconectado pode pendurar por muito tempo, desperdiçando recursos. O nível de soquete KEEPALIVE foi habilitado para permitir que o sistema operacional visse essas conexões com falha.
- Os comandos na família `git log` tomam% C (auto) em uma seqüência de formato personalizada. Isso incondicionalmente ativou a cor, ignorando - não color ou com --color = auto quando a saída não está conectada a um tty; Isso foi corrigido para tornar o formato verdadeiramente comportado como "auto".
- "git rev-list --count" cujo comprimento de caminhada é limitado com a opção "-n" não funcionou bem com a contagem otimizada para olhar o índice de bitmap.
- "git show -W" (estender os hunks para cobrir toda a função, delimitada por linhas que combinam o padrão "funcname") usado para mostrar todo o arquivo quando uma alteração adicionou uma função inteira no final do arquivo, o que foi corrigido.
- O conjunto de documentação foi atualizado para que os comandos literais, as variáveis de configuração e as variáveis de ambiente sejam consistentemente compostas em fontes de largura fixa e negrito nas páginas de manuais.
- o subcomando "git svn propset" que foi adicionado em 2.3 dias está documentado agora.
- A documentação tenta soletrar consistentemente "GPG"; Ao se referir ao nome do programa específico, "gpg" é usado.
- "git reflog" parou ao ver uma entrada que denota um evento de criação de ramificação (também conhecido como "unborn"), o que fez aparecer como se o reflog estivesse truncado.
- O scriptlet git-prompt (em contrib /) não foi amigável com aqueles que usam "set -u", que foi corrigido.
- Um código que usou alloca (3) para colocar uma quantidade ilimitada de dados na pilha foi atualizado para evitar fazê-lo.
- "git update-index --add --chmod = + x file" pode ser usado como uma escotilha de fuga, mas não é uma coisa amigável para forçar as pessoas que precisam usá-lo regularmente. "git add --chmod = + x file" pode ser usado em vez disso.
- Construa melhorias para gnome-keyring (em contrib /)
- "git status" costumava dizer "diretório de trabalho" quando significava "árvore de trabalho".
- Os comentários sobre erros de reconhecimento de shells do FreeBSD foram esclarecidos com o número da versão (9.x e antes são quebrados, os mais novos estão OK).
- "git cherry-pick A" trabalhou em um ramo não nascido, mas "git cherry-pick A..B" não.
- "git add -i / -p" aprendeu a honrar o controle experimental de diff.compactionHeuristic, para que o usuário possa trabalhar na mesma divisão de "hunk" como saída "git diff".
- "log --graph --format =" aprendeu que "% & gt; | (N)" especifica a largura relativa à borda esquerda do terminal, não relativa à área para desenhar texto que está à direita da ascendência - seção de gráfico. Também aceita N negativo, o que significa que o limite da coluna é relativo ao limite direito.
- A regra de propriedade para o pedaço de memória que contém as referências a serem obtidas em "git fetch" foi enganada, que foi limpa.
- "git bisect" faz uma chamada interna para "git diff-tree" quando a bisecão encontra o culpado, mas essa chamada não iniciou a estrutura de dados para passar corretamente para a API diff-tree.
- Formatos dos vários dados (e como validá-los) onde usamos a assinatura GPG foram documentados.
- Corrigir uma regressão não intencional na v2.9 que quebra "clone -depth" que recorre aos sub-módulos, forçando os submódulos também a serem clonados superficialmente, que muitas instâncias de servidor que hospedam a montante dos submódulos não estão preparadas para.
- Corrigir desnecessariamente o desperdício no uso idiomático de ': $ {VAR = default}' para definir o valor padrão, sem anexá-lo entre aspas duplas.
- Alguns códigos específicos da plataforma possuíam declarações estritas não ANSI de funções C que não possuem parâmetros, que foram corrigidos.
- O código interno usado para mostrar o deslocamento do fuso horário local não está preparado para lidar com os carimbos de hora além do ano 2100 e deu um valor de deslocamento falso ao chamador. Use um estilo mais benigno +0000 em vez disso e deixe "git log" em tal caso, em vez de abortar.
- Uma das quatro invocações de readlink (1) em nosso conjunto de testes foi reescrita para que o teste possa ser executado em sistemas sem o comando (outros estão na estrutura de teste valgrind e em t9802).
- t / perf precisa / usr / bin / time com extensão GNU; a invocação é atualizada para "gtime" em Darwin.
- Um erro, que causou "git p4" durante a execução em modo detalhado para denunciar caminhos que são omitidos devido ao prefixo de ramificação incorretamente, foi corrigido; o comando disse "Ignorar arquivo fora do prefixo" para caminhos que estão _inside _.
- A documentação do nível superior "git help git" ainda apontou para o conjunto de documentação hospedado no agora extinto repositório de códigos google. Atualize-o para indicar https://git.github.io/htmldocs/git.html em vez disso.
O que é novo na versão 2.9.0:
Novo no GIT 2.8.1 (5 de abril de 2016)
O que é novo na versão 2.8.1:
- O alvo "make rpmbuild" foi quebrado como sua entrada, git.spec.in, não foi atualizado para coincidir com um arquivo que descreve que foi renomeado recentemente. Isso foi corrigido.
O que é novo na versão 2.7.3:
- Tradicionalmente, os testes que tentam comandos que funcionam no conteúdo da árvore de trabalho foram nomeados com "worktree" em seus nomes de arquivos, mas com a adição recente do subcomando "git worktree", cujos testes também são nomeados de forma semelhante, ele tem tornar-se mais difícil de separá-los. Os testes tradicionais foram renomeados para usar "trabalho-árvore" em vez disso, na tentativa de diferenciá-los.
- Muitos códigos de caminho esquecem de verificar o valor de retorno de git_config_set (); a função é feita para morrer () para garantir que não procedemos quando a configuração de uma variável de configuração falhou.
- O manuseio de erros ao escrever em nosso processo assíncrono interno foi feito mais robusto, o que reduz a falta de fluxo em nossos testes.
- "git show" HEAD: Foo [BAR] Baz '"não interpretou o argumento como uma rev, ou seja, o objeto nomeado pelo caminho com caracteres curinga em um objeto de árvore.
- "git rev-parse - git-common-dir" usado na função worktree mal comportado quando executado a partir de um subdiretório.
- O subcomando "v (iew)" do comando "git am -i" interativo foi quebrado no período de 2.6.0 quando o comando foi reescrito em C.
- "git merge-tree" usado para manipular "ambos os lados adicionados" conflito com o seu próprio "criar um arquivo ancestral falso que tenha as partes comuns do que os dois lados tenham adicionado e fazer uma lógica de mesclagem de 3 vias"; Isso foi atualizado para usar a abordagem usual de "3-way Merge with a empty blob as fake common ancestor file" utilizada no resto do sistema.
- A regra de propriedade da memória da API fill_textconv (), que foi um pouco complicada, foi documentada um pouco melhor.
- A documentação não indicou claramente que o modo "simples" é agora o padrão para "git push" quando a configuração push.default não está definida.
- As versões recentes do GNU grep são mais seletivas quando a sua entrada contém dados binários arbitrários, que alguns de nossos testes usam. Reescreva os testes para evitar o problema.
- Uma função de ajuda "submódulo git" usa desde v2.7.0 para listar os módulos que correspondem ao argumento pathpec dado aos seus subcomandos (por exemplo, "submodule add") foi corrigido.
- "git config section.var value" para definir um valor no arquivo de configuração por repositório falhou quando foi executado fora de qualquer repositório, mas não disse o motivo corretamente.
- O código para ler os dados do pacote usando os offsets armazenados no arquivo idx do pacote foi feito com mais cuidado, verifique a validade dos dados no idx.
O que é novo na versão 2.7.2:
- A máquina de mesclagem de baixo nível foi ensinada a usar a terminação da linha CRLF ao inserir marcadores de conflitos em conteúdos mesclados que são eles próprios CRLF terminados em linha.
- "git worktree" tinha um código quebrado que tentava corrigir automaticamente a inconsistência possível que resulta de usuários finais mover um worktree para lugares diferentes sem contar o Git (o repositório original precisa manter backpointers em seus worktrees, mas "mv" executado por usuários finais que não estão familiarizados com esse fato, obviamente, não os ajustará), o que realmente piorou as coisas quando desencadeou.
- "git push - force-with-lease" foi ensinado a informar se o impulso necessário para forçar (ou encaminhamento rápido).
- O comando "sim" emulado usado em nossos scripts de teste foi ajustado para não gastar muito tempo gerando saída desnecessária que não é usada, para ajudar aqueles que testam no Windows, onde não iria parar até que ele preencha o buffer do tubo devido falta de SIGPIPE.
- O backend do vimdiff para "git mergetool" foi ajustado para organizar e codificar os buffers na ordem que corresponderia à expectativa de maioria das pessoas que leram da esquerda para a direita, então de cima para baixo e atribuir buffers 1 2 3 4 "mentalmente" para as janelas de mesclagem remota de base local baseadas nessa ordem.
- A documentação para "git clean" foi corrigida; mencionou que .git / modules / * são removidos dando dois "-f", que nunca foi o caso.
- Os caminhos que foram informados sobre o índice com "adicionar -N" ainda não estão no índice, mas alguns comandos se comportaram como se já estivessem prejudicando.
- Também inclui minúsculas documentações e atualizações de teste.
O que é novo na versão 2.6.4:
- O script "configure" não testou para -lpthread corretamente, o que altera alguns links.
- Adicione suporte para falar http / https sobre o proxy de meias.
- Correção de portabilidade para o Windows, que pode reescrever a variável $ SHELL usando caminhos não POSIX.
- Agora, de forma consistente, permitimos que todos os ganchos ignorem a sua entrada padrão, em vez de ter git queixar-se de SIGPIPE.
- Corrigir a cotação do shell no script contrib.
- Solução de portabilidade de teste para um tópico na v2.6.1.
- Permitir tilde-expansão em algumas variáveis http config.
- Dê um caso especial útil "diff / show --word-diff-regex =." como exemplo na documentação.
- Solução para uma caixa de canto em filial de filtro.
- Faça o git-p4 trabalhar em uma cabeça destacada.
- Aclaração de documentação para "check-ignore" sem "--verbose".
- Assim como a árvore de trabalho é limpa quando o usuário cancelou a submissão em P4Submit.applyCommit (), limpe a bagunha se "p4 submit" falhar.
- Ter um arquivo .idx restante sem o arquivo correspondente .pack no repositório dói o desempenho; "git gc" aprendeu a podar-lhes.
- O código para preparar o lado da árvore de trabalho do diretório temporário para o recurso "dir-diff" esqueceu que os links simbólicos não precisam ser copiados (ou simbalizados) para a área temporária, já que o código já é um caso especial e sobrescreve eles. Além disso, foi errado tentar calcular o nome do objeto do alvo simbólico, que talvez nem exista ou possa ser um diretório.
- Não havia nenhuma maneira de derrotar uma variável configurada rebase.autostash da linha de comando, como "git rebase --no-autostash" faltando.
- Permitir que "git interpret-trailers" seja executado fora de um repositório Git.
- Produza o marcador "sujo" correto para as solicitações do shell, mesmo quando estamos em um orfandade ou um ramo não nascido.
- Alguns casos de canto foram corrigidos na correspondência de strings feito no "status git".
- A implementação de criptografia comum da Apple de SHA1_Update () não leva mais de 4GB por vez, e agora temos uma solução de tempo de compilação para isso.
O que é novo na versão 2.5.3:
- O recurso de cache sem trilhas experimental foi buggy quando os caminhos com alguns níveis de subdiretórios estão envolvidos.
- As versões recentes do script "git am" têm uma regressão de desempenho no código "git am --skip", que já não existe na versão incorporada na frente 'mestre'. Corrija a regressão na última versão com script que aparece na faixa de manutenção 2.5.x e antiga.
O que é novo na versão 2.4.6:
- "git fetch --depth =" e "git clone --depth =" emitiram uma solicitação de transferência superficial mesmo para um pacote de upload que não suporta a capacidade.
- "git fsck" costumava ignorar objetos ausentes ou inválidos registrados no reflog.
- A conclusão do tcsh escreve um scriptlet bash, mas isso falharia para os usuários com o conjunto noclobber.
- As actualizações recentes do Mac OS X quebram a lógica para detectar que a máquina está na corrente alternada na amostra de script pre-auto-gc.
- "git format-patch --ignore-if-upstream A..B" não gostou de ser alimentado com tags à medida que os compromissos de fronteira.
- Também contém typofixes, atualizações de documentação e código trivial
- limpeza.
O que é novo na versão 2.4.2:
- "git rev-list --objects $ old --not --all" para ver se tudo o que é alcançável de $ old já está conectado aos refs existentes foi muito ineficiente.
- "hash-object - literally" introduzido na v2.2 não estava preparado para ter um nome de tipo de objeto muito longo.
- "git rebase -quiet" não era bastante silencioso quando não há nada a fazer.
- A conclusão do valor do parâmetro "log --decorate =" estava incorreta.
- mensagem de log de confirmação de "filial de filtro" que termina com uma linha incompleta em plataformas com algumas implementações "sed" que combinam essa linha. Trabalhe ao redor evitando usar "sed".
- "git daemon" não consegue ser compilado a partir da fonte sob a configuração NO_IPV6 (regressão em 2.4).
- "git stash pop / apply" esqueceu de se certificar de que não apenas a árvore de trabalho está limpa, mas também o índice está limpo. O último é importante porque um aplicativo Stash pode entrar em conflito e o índice será usado para resolução de conflitos.
- Prependemos $ GIT_EXEC_PATH e o caminho "git" está instalado (geralmente "/ usr / bin") para $ PATH ao invocar subprogramas e ganchos por quase toda a eternidade, mas o caso de uso original que este tentou suportar foi semi -bogus (ou seja, instale git to / opt / foo / git e execute-o sem ter / opt / foo em $ PATH) e, mais importante, tornou-se cada vez menos relevante à medida que o Git cresceu mais mainstream (ou seja, os usuários deveriam ter em seus $ PATH). Pare de prepender o caminho no qual "git" está instalado no $ PATH dos usuários, pois isso interferiria na ordem de procura de comandos que as pessoas dependem (por exemplo, podem não gostar de versões de programas que não estão relacionados ao Git em / usr / bin e que desejam substitua-os por ter diferentes em / usr / local / bin e tenha o último diretório mais cedo em seus $ PATH).
- Também contém typofixes, atualizações de documentação e limpeza de código trivial.
Comentários não encontrado