O que há de novo no Git 1.8.5

Nicola Paolucci
Nicola Paolucci
Voltar para a lista

Enquanto o próximo grande lançamento do git, que vai trazer algumas atualizações relevantes, não chega, a gente pode explorar as notas do último lançamento pontual: o 1.8.5 está chegando!

Aqui está o que eu poderia extrair das notas de lançamento que foram interessantes para mim no meu papel de usuário médio do git.

Ah, e se você ainda não os viu, confira minhas notas anteriores sobre as versões 1.8.2, 1.8.3 e 1.8.4.

Ponteiros de instalação habituais

É costume dar algumas dicas para fazer upgrade, com advertências e lembretes de que os gerentes de pacotes, em alguns casos, podem atrasar a distribuição; isso está fora de minhas mãos.r Em qualquer caso, aqui estão algumas instruções simples para upgrade:

  • Basta digitar brew update&& brew upgrade git se você usar o Homebrew no OSX.
  • Use um truque mágico de apt se estiver em distribuições baseadas no Ubuntu (deixo outras distribuições como um exercício para o leitor).
  • Basta executar o novo instalador se estiver no Windows (a porta do Windows às vezes fica um pouco atrasada, portanto, seja paciente se não conseguir encontrá-la de imediato).

O novo alias HEAD está, por fim, disponível

Isso estava cozinhando por um tempo e , por fim, chegou: HEAD tem um novo alias, em vez de digitar quatro letras maiúsculas, você pode dizer "@" agora, por exemplo. "git log @".

Um pouco de polimento de rebase

O Rebase viu um pouco de polimento:

  • Na folha de operações do --interactive rebase, a lista de IDs de commit agora vai estar em conformidade com o comprimento core.abbrev (core.abbrev é a configuração que contém o tamanho dos hashes abreviados dos commits, sendo o padrão 7).

  • Agora você pode personalizar se git pull --rebase deve usar o nivelamento padrão ou preservar mesclagens modificando a configuração pull.rebase para preservar. Para obter mais informações sobre o que isso e rebase --preserve-merges fazem, verifique a resposta do Stack Overflow.

Pequenas melhorias de status

Várias melhorias no git status foram incluídas nesta versão:

  • Ele não imprime mais informações de status sujas para submódulos para cada submódulo. $name.ignore está definido como" all".

  • Durante um cherry-pick, ele mostra qual commit original está sendo escolhido.

  • Ele não vai cuspir sua saída precedida por # marcadores de comentário. Se você precisar de scripts para analisar a saída do git status, agora você deve atualizá-los para usar git status --porcelain.

  • git status e git branch -v -v agora distinguem entre um branch que não compila em nenhum outro branch, um branch que está em sincronia com o branch que ele cria e um branch que está configurado para compilação em algum outro branch que não existe mais.

Diferença para" todas as" classes, exceto

git diff --diff-filter já pode filtrar várias classes de mudanças:

--diff-filter=[(A|C|D|M|R|T|U|X|B)...[*]]
    Select only files that are Added (A), Copied (C), Deleted (D), Modified (M), Renamed (R), have their type
    (i.e. regular file, symlink, submodule, ...) changed (T), are Unmerged (U), are Unknown (X), or have had
    their pairing Broken (B). Any combination of the filter characters (including none) can be used. When *
    (All-or-none) is added to the combination, all paths are selected if there is any file that matches other
    criteria in the comparison; if there is no file that matches other criteria, nothing is selected.

Agora pode levar letras minúsculas para significar mostrar tudo, menos essas classes.

Variáveis HTTP por site

  • O" http. *" as variáveis agora podem ser especificadas por URL que a configuração se aplica. Por exemplo, o seguinte desativaria http.sslVerify apenas ao falar com esse site especificado:
[http]
    sslVerify = true
[http "https://weak.example.com/"]
    sslVerify = false

Conscientização do submódulo de boas-vindas em movimento

O suporte a submódulos mostra constante melhora a cada lançamento, desta vez o git ganha a capacidade de realocar submódulos:

'git mv A B' ao mover um submódulo A foi ensinado a realocar sua árvore de trabalho e ajustar os caminhos nos módulos .gitmodules file.

Desempenho, implementação interna etc.

  • O transporte HTTP vai tentar usar a manutenção de atividade de TCP quando possível.

  • git repack agora está escrito em C.

Outros petiscos

Outros petiscos interessantes direto das notas de lançamento:

  • git whatchanged obsoleto, mas não removido. Tornou-se menos proeminente na parte geral da documentação.
  • git cherry-pick agora entende git cherry-pick - para escolher a partir do branch anterior.
  • O xdg-open pode ser usado como um backend do navegador para git web-browse (portanto, para mostrar a saída git help -w), quando disponível.
  • Assim como make -C , git -C ... diz ao Git para ir lá antes de fazer qualquer outra coisa.
  • Faça foo^ {tag} para descascar uma tag para si mesmo, ou seja, no-op., e falhe se "foo" não for uma tag. git rev-parse --verify v1.0^ {tag} seria uma maneira mais conveniente de dizer test $ (git cat-file -t v1.0) = tag.
  • git push --no-thin, de fato, desativa a" otimização de transferência de pacotes" finos.
  • Magic pathspecs como ":(icase)makefile" que corresponde a Makefile e makefile e ":( glob) foo/**/bar" que corresponde "bar" em" foo" e qualquer subdiretório de "foo" pode ser usado em mais lugares.
  • git blame agora pode usar mais de uma opção -L para descobrir a origem de vários blocos das linhas.
  • Os clientes de transporte http podem, como opção, pedir para salvar cookies com a variável de configuração http.savecookies.
  • O git fetch (daí o "git pull" também) aprendeu a verificar as variáveis de configuração fetch.prune e remote.*.prune e a se comportar como se a opção de linha de comando --prune tivesse sido fornecida.

Por enquanto, é só. Avise-me se você achar essa atualização útil e fique ligado para mais. Siga-me @durdn e a incrível equipe @AtlDevtools para mais rock DVCS.

Pronto(a) para aprender Git?

Tente este tutorial interativo.

Comece agora mesmo