Escrevendo suas próprias histórias com git

Olá a todos 🙂 Antes de continuar com os textos da lista de pedidos, quero comemorar o lançamento do git 2.16 agradecendo a cada um dos que enviaram um patch e a cada um dos usuários, no total tínhamos cerca de 4000 linhas entre atualizações e correções , o que não fala muito bem da minha primeira versão, mas fala da sua gentileza 🙂 Obrigado! Agora, vou te contar um segredinho, até agora não houve um momento em que eu não tivesse sentado para escrever um artigo e tivesse pensado muito sobre isso, geralmente eu apenas escrevo em uma fila, e então o bom lagarto leva a gentileza de corrija meus erros de digitação 🙂 obrigado a ele também.

Isso não é o melhor quando falamos em escrever artigos, supostamente deveria ter um objetivo e construir uma estrutura, e marcar pequenos pontos e avaliações e etc etc ... Agora, isso não se aplica apenas a blogs em geral, mas é essencial em um software que finge ser bom 🙂 Para esta tarefa, e depois de alguns problemas com o software de controle de versão que era usado no desenvolvimento do kernel há alguns anos, ele nasceu git 🙂

Onde aprender git?

A quantidade de documentação em torno do git é impressionante, mesmo se apenas pegássemos as páginas de manual que vieram com a instalação, teríamos uma quantidade imensa de leitura. Eu pessoalmente acho o livro git bem desenhado, até eu traduzi alguns dos segmentos da seção 7, ainda tenho alguns, mas me dê tempo talvez neste mês eu possa traduzir o que resta dessa seção.

O que o git faz?

O Git foi projetado para ser rápido, eficiente, simples e suportar grandes cargas de informações, afinal, a comunidade do kernel o criou para seu software, que é uma das maiores obras conjuntas de software livre do mundo e possui centenas de contribuições por hora em uma base de código que excede um milhão de linhas.

O interessante sobre o git é sua maneira de manter versões de dados. Antigamente (outros programas de controle de versão) compactavam todos os arquivos existentes em um ponto da história, como fazer um backup. Git adota uma abordagem diferente, ao realizar um commit um ponto na história é marcado, esse ponto na história tem uma série de modificações e funciona, no final do dia, todas as modificações são reunidas ao longo do tempo e os arquivos são obtidos para poder comprimir ou marcar como marcos de versões. Como sei que tudo isso parece complicado, vou levá-lo em uma jornada mágica em um exemplo superbásico.

Pequeno projeto de calculamática

A calculamatics será um programa que encontrará os quadrados de um determinado número, faremos em C e será o mais simples possível, por isso não espere muitas verificações de segurança da minha parte. Primeiro vamos criar um repositório, vou fazer isso com o Github para matar dois coelhos com uma cajadada:

Próprio. Christopher Diaz Riveros

Nós adicionamos algumas coisas simples como a licença (muito importante se você quiser proteger seu trabalho, no meu caso, force-os a compartilhar os resultados se quiserem usá-la como base: P)

Agora vamos ao nosso querido terminal, git clone é o comando que é responsável por baixar o repositório localizado no url atribuído e criar uma cópia local em nosso computador.

Próprio. Christopher Diaz Riveros

Agora vamos verificar com git log o que aconteceu na história do nosso projeto:

Aqui temos muitas informações em cores diferentes 🙂 vamos tentar explicar:

a primeira linha amarela é o "código de barras do commit". Cada commit tem seu próprio identificador único, com o qual você pode fazer muitas coisas, mas vamos salvá-lo para depois. Agora temos HEAD de celeste e master verde. Estes são "ponteiros", sua função é apontar para a localização atual de nossa história (HEAD) e a filial em que estamos trabalhando em nosso computador (master).

origin/master é a contraparte da internet, origin é o nome padrão que foi atribuído ao nosso URLe master é o ramo em que você está trabalhando ... pra simplificar, quem tem um / são aqueles que não estão em nossa equipe, mas são referências para o que está na internet.

Então temos o autor, a data e hora e o resumo do commit. Esta é uma pequena revisão do que aconteceu naquele momento da história, muito importante em muitos projetos e há muitas informações condenadas. Vamos dar uma olhada mais de perto no que aconteceu no commit com o comando git show <código-de-commit>

 

Próprio. Christopher Diaz Riveros

O comando git show nos leva a esta tela em formato de patch, onde você pode ver o que foi adicionado e o que foi removido (se algo tivesse sido removido) naquele momento da história, até agora apenas nos mostra que o registros .gitignore,README.mdLICENSE.

Agora vamos ao que interessa, vamos escrever um arquivo 🙂 vamos criar o primeiro marco da nossa história 😀:

Próprio. Christopher Diaz Riveros

Resumidamente, vamos criar um programa que nos mostra o número de argumentos passados ​​ao executá-lo, simples 🙂

Próprio. Christopher Diaz Riveros

Isso foi fácil 🙂 agora vamos ver o seguinte comando útil: git status

Próprio. Christopher Diaz Riveros

Alguma alma bondosa traduziu git para torná-lo fácil de seguir, aqui temos muitas informações úteis, sabemos que estamos no ramo mestre, que estamos atualizados com origin/master(o branch Github), temos arquivos não rastreados! e que para adicioná-los temos que usar git add, vamos tentar 🙂

Próprio. Christopher Diaz Riveros

Agora temos um novo espaço verde, no qual é exibido o arquivo que adicionamos à área de trabalho. Neste local podemos agrupar nossas alterações para fazer um commit, o commit consiste em um marco ao longo da história do nosso projeto, vamos criar o commit 🙂 git commit

Próprio. Christopher Diaz Riveros

Explicado resumidamente, a linha amarela é o título do nosso commit, escrevo main.c para uma mera referência visual. O texto preto é a explicação das mudanças feitas desde o commit anterior até agora 🙂 salvamos o arquivo e veremos nosso commit salvo no registro.

Próprio. Christopher Diaz Riveros

Agora vamos ver a história do nosso projeto com git log

Próprio. Christopher Diaz Riveros

Novamente no log, agora podemos ver que as linhas verdes e vermelhas estão diferentes, ou seja, no nosso computador, somos um commit acima dos armazenados na internet 🙂 vamos continuar o trabalho, suponha que agora eu queira mostrar um mensagem caso o usuário coloque mais de um argumento no programa (o que tornaria a calculadora confusa 🙂)

Como podemos ver, nosso programa cresceu muito 😀, agora temos a função imprimir_ayuda() que exibe uma mensagem sobre como usar cálculos, e no bloco main() agora fazemos uma revisão com if(Algo que veremos em um tutorial de programação em outro momento, por enquanto só é necessário saber que se mais de 2 argumentos forem inseridos na calculamatica, o programa termina e a ajuda é exibida. Vamos executá-lo:

Próprio. Christopher Diaz Riveros

Como você pode ver, agora imprime o número que foi entregue em vez do número de argumentos, mas que eu não tinha contado antes 🙂 para os curiosos echo $? mostra o código de saída do último programa executado, que é 1 porque terminou com erro. Agora vamos revisar como nossa história vai:

Próprio. Christopher Diaz Riveros

Agora sabemos que somos 1 commit antes do Github, que o arquivo main.c foi modificado, vamos criar o próximo commit fazendo git add main.c  e, em seguida, git commit🙂

Próprio. Christopher Diaz Riveros

Agora fomos um pouco mais específicos, já que implementamos uma função e alteramos o código de validação. Agora que ele foi salvo, revisaremos nossa última alteração. Podemos ver isso com git show HEAD

Próprio. Christopher Diaz Riveros

Agora você pode ver as linhas vermelhas e verdes, adicionamos a biblioteca stdlib.h, modificou muito do código e adicionou a função à nossa história.

Agora vamos ver o log: (git log)

Próprio. Christopher Diaz Riveros

Podemos ver que estamos dois commits à frente da versão do Github, vamos equalizar o marcador um pouco 🙂 para que usamos git push origin master

Com isso dizemos, enviar meus commits para a url origin no galho master

Próprio. Christopher Diaz Riveros

Parabéns! Agora suas mudanças estão no Github, não acredita em mim? vamos revisar isso

Próprio. Christopher Diaz Riveros

Agora temos os 3 commits no Github 🙂

Resumo

Tocamos nos aspectos mais básicos de git, agora eles podem criar um fluxo de trabalho simples em seus projetos, isso é quase nada de toda a grande variedade de coisas que podem ser feitas com o git, mas certamente é a coisa mais prática e cotidiana para um desenvolvedor ou blogueiro. Ainda não chegamos ao fim da calculadora, mas vamos deixar isso para outro momento 😉 Muito obrigado por ter vindo aqui e espero que ajude você a participar de vários projetos 😀 Saudações

 


O conteúdo do artigo segue nossos princípios de Ética editorial. Para relatar um erro, clique clique aqui.

7 comentários, deixe o seu

Deixe um comentário

Seu endereço de email não será publicado. Campos obrigatórios são marcados com *

*

*

  1. Responsável pelos dados: Miguel Ángel Gatón
  2. Finalidade dos dados: Controle de SPAM, gerenciamento de comentários.
  3. Legitimação: Seu consentimento
  4. Comunicação de dados: Os dados não serão comunicados a terceiros, exceto por obrigação legal.
  5. Armazenamento de dados: banco de dados hospedado pela Occentus Networks (UE)
  6. Direitos: A qualquer momento você pode limitar, recuperar e excluir suas informações.

  1.   Paul dito

    Olá ... não sei se estás, mas não consigo ver as imagens desta reportagem ...

    lembranças

  2.   Paul dito

    Foi um problema com meu navegador. Desculpe pela inconveniência.

  3.   Mundo Tecprog dito

    Ainda tenho que ler com mais detalhes, sou um novato.

  4.   Projeto de lei dito

    Ótimo artigo para começar com git, embora eu recomende fazer anotações para entender os detalhes.
    Algumas coisas não ficaram claras para mim:
    qual é a opção para Adicionar .gitignore Cembora eu ache que vou ver quando praticar,
    por que você tem que refazer git add main.c antes do próximo git commit, add main.c diz ao git para comparar esse arquivo com a versão de rede? Não compara automaticamente todos os arquivos adicionados para rastreamento?

    1.    Chris ADR dito

      Olá Guillermo 🙂 que bom que você achou útil, para responder suas perguntas:

      .gitignore é um arquivo que diz ao git quais formatos ou padrões devem ser ignorados, neste caso selecionar C faz com que os arquivos .o sejam ignorados e outros que são gerados em tempo de compilação, o que é bom porque caso contrário seu git ficaria louco de cada compilação e acompanhamento 🙂 você pode verificar o grande número de formatos que o git omite em seu template C fazendo cat ou com um editor de texto.

      Embora o git acompanhe cada arquivo adicionado à árvore de trabalho, é necessário selecionar especificamente quais arquivos entrarão no próximo commit, para dar um exemplo, vamos supor que seu trabalho o tenha levado a modificar 5 arquivos diferentes antes ser capaz de ver o resultado. Se você quiser ser um pouco mais específico e explicar o que é feito em cada um, pode fazer git add file1; git commit; git add file2; git commit… .3,4,5; git commit. Desta forma, sua história fica limpa e as mudanças bem definidas. E no caso de você ter que mudar algo, ou reverter (tópicos mais avançados) você pode reverter coisas específicas ou adicionar coisas específicas sem mudar o resto.

      Espero que ajude 🙂 saudações e obrigado por perguntar

    2.    Chris ADR dito

      PS: o git add não diz para comparar com a versão na rede, mas com o commit anterior na sua linha de trabalho, se for local (verde) vai comparar com aquele, se for remoto (vermelho) vai compare com aquele outro. Só para esclarecer 😉

      1.    Projeto de lei dito

        Perfeito, claro que esclarece.