Como usar tags Git para melhorar seus processos de desenvolvimento

Como usar tags Git para melhorar seus processos de desenvolvimento
Para a maioria das equipes de desenvolvimento, o Git se tornou uma ferramenta essencial para controle de versão. Uma grande razão para a popularidade do Git é sua capacidade perfeita de criar ramos. As equipes de desenvolvimento podem usar filiais para trabalhar em recursos ou lançamentos específicos. No entanto, a tag do Git é um comando frequentemente esquecido que pode ajudar as equipes a simplificar seus fluxos de trabalho. Neste artigo, mergulharemos no que é, como é e por que a marcação é.

O que são tags git?

Tags git são dicas para certas começos. Eles são como favoritos. Você pode usar qualquer tipo de convenção que deseja criar tags. Mas a maioria das equipes de desenvolvimento usa números de versão como v1.0.1 ou v.1.1-a1 para criar tags.

Criando tags

Existem dois tipos de tags no Git:

  • Tags leves
  • Tags anotadas

Tags leves

As tags leves são fáceis de criar. Você pode simplesmente usar a seguinte linha de comando:

$ git tag

Essas tags são armazenadas no .pasta git do seu repositório de trabalho.

Vamos criar algumas tags git leves:

$ git tag v1.0.1
$ Git Tag Release-20190401

No primeiro caso, criamos uma tag com “V1.0.1 ”. No segundo caso, criamos uma tag com "Release-20190401". As tags leves não retornam nenhum valor. Além disso, é importante ressaltar que, como essas duas tags foram feitas para trás, elas estão apontando para o mesmo compromisso.

Tags anotadas

Tags anotadas permitem armazenar mais informações. Você pode usar a opção "-a" para criar estas tags:

$ git tag -a

Vamos tentar criar uma tag anotada:

tag git -a v1.0.2

Ele exibirá uma janela de texto para você inserir um comentário que deve ficar assim:

#
# Escreva uma mensagem para tag:
# v1.0.2
# Linhas começando com '#' serão ignoradas.

Insira um comentário e salve -o. Então, agora sua tag v1.0.2 é salvo com um comentário. Como alternativa, você pode inserir diretamente o comentário na linha de comando assim:

tag git -a v1.0.3 -M "minha versão 1.0.3 "

Encontrando tags em seu código

Agora que criamos algumas tags, vamos ver o que temos:

$ git tag -l
Release-20190401
v1.0.1
v1.0.2
v1.0.3

Podemos ver todas as nossas tags são exibidas em ordem alfabética. Você pode obter mais informações sobre as tags usando o "-n", onde representa o número de linhas dos comentários.

$ git tag -n1
Release-20190401 Readme atualizado.MD
v1.0.1 Readme atualizado.MD
v1.0.2 minha versão 1.0.2
v1.0.3 minha versão 1.0.3

Aqui você pode notar a diferença entre tags leves e anotadas. Neste exemplo, "Release-20190401" e "V1.0.1 ”são tags leves. O “v1.0.2 "e" V1.0.3 ”são tags anotadas. Todos eles estão apontando para o mesmo comprometimento (comprometimento 34671):

$ git log
Commit 106e0bb02a58ec3e818e9acdf3bb19a9247a0e84 (cabeça -> mestre, tag: v1.0.4)
Autor: Zak H
Data: Sáb 6 de abril 21:06:02 2019 -0700
Recurso adicionado 2
Commit 161C6E564E79624623ED767397A98105426D0EC4
Autor: Zak H
Data: Sáb 6 de abril 21:05:25 2019 -0700
Recurso adicionado 1
COMIT 34671D824F9B9951E57F867998CB3C02A11C4805 (TAG: V1.0.3, tag: v1.0.2,
Tag: v1.0.1, tag: Release-20190401)
Autor: Zak H
Data: Sáb 6 de abril 20:24:53 2019 -0700
Readme atualizado.MD
COMMIT AFE9B0C7C9FBCE3C3D585AFE67358A5EEC226E2C (Origin/Master)
Autor: Zak H
Data: Sáb 6 de abril 20:23:55 2019 -0700
Iniciar

No entanto, as tags leves estão mostrando os comentários do próprio Commit que é “Readme atualizado.MD ”, enquanto as tags anotadas estão mostrando os comentários individuais que foram adicionados a eles durante o processo de criação de tags.

Dica: Se você deseja encontrar o número de comprometimento de uma tag específica, pode usar o comando "git show":

$ git show v1.0.3
Tag v1.0.3
Tagger: Zak H
Data: Sáb 6 de abril 20:43:30 2019 -0700
Minha versão 1.0.3
COMIT 34671D824F9B9951E57F867998CB3C02A11C4805 (TAG: V1.0.3, tag: v1.0.2, tag:
v1.0.1, tag: Release-20190401)
Autor: Zak H
Data: Sáb 6 de abril 20:24:53 2019 -0700
Readme atualizado.MD
diff - -git a/readme.md b/readme.MD
ÍNDICE 9DAEAQB… 180CF83 100644
--- A/README.MD
+++ b/ReadMe.MD
@@ -1 +1 @@
-teste
+Test2

Marcando cometidos mais antigos

Você também pode voltar e marcar um commit mais antigo. Vejamos os troncos:

$ git log --oneeline
106e0bb (cabeça -> mestre, tag: v1.0.4) Recurso adicionado 2
161C6E5 Recurso adicionado 1
34671D8 (Tag: v1.0.3, tag: v1.0.2, tag: v1.0.1, tag: Release-20190401) Readme atualizado.MD
AFE9B0C (Origin/Master) init
$

Percebemos que o commit 161C6E5 não tem uma tag associada. Podemos marcar esse compromisso assim:

$ git tag -a release -20190402 161c6e5

Vai aparar a janela de comentários. Depois de colocarmos o comentário, podemos ver que temos o commit marcado agora:

$ git tag -n1
Release-20190401 Readme atualizado.MD
Release-20190402 Adicionado tag a uma confirmação mais antiga
v1.0.1 Readme atualizado.MD
v1.0.2 minha versão 1.0.2
v1.0.3 minha versão 1.0.3
v1.0.4 Recurso adicionado 2

Removendo tags

Suponha que você decida que não quer o “lançamento-“ tags como elas são confusas. Você pode primeiro encontrar todas as tags “Release-“

$ git tag -l Release*
Release-20190401
Release-20190402

Agora, você pode removê-los com a opção "-d":

$ git tag -d Release -20190401
Tag excluído 'Release-20190401' (foi 34671d8)
$ git tag -d Release -20190402
Tag excluído 'Release-20190402' (era 6EE37bc)

Se verificarmos as tags novamente, devemos ver apenas as tags que começam com "V":

$ git tag -n1
v1.0.1 Readme atualizado.MD
v1.0.2 minha versão 1.0.2
v1.0.3 minha versão 1.0.3
v1.0.4 Recurso adicionado 2

Tags sobrescritas

Suponha que tenhamos uma situação em que “v1.0.A tag de 4 ”está apontando para o recurso 2:

$ git log --oneeline
D7B18A4 (Chefe -> Master) Adicionado Recurso 3
106e0bb (Tag: v1.0.4) Recurso adicionado 2
161C6E5 Recurso adicionado 1
34671D8 (Tag: v1.0.3, tag: v1.0.2, tag: v1.0.1) Readme atualizado.MD
AFE9B0C (Origin/Master) init

Mas queremos a tag "v1.0.4 ”para apontar no recurso 3. Se tentarmos reagir, obtemos este erro:

$ git tag v1.0.4 D7B18A4
FATAL: TAG 'V1.0.4 'já existe

Podemos superar esse problema com a opção "-f":

$ git tag -f v1.0.4 D7B18A4
Tag atualizada 'v1.0.4 '(era 106e0bb)

Se verificarmos o log novamente, vemos que a tag foi para a confirmação que queremos:

$ git log --oneeline
d7b18a4 (cabeça -> mestre, tag: v1.0.4) Recurso adicionado 3
106e0bb Adicionado recurso 2
161C6E5 Recurso adicionado 1
34671D8 (Tag: v1.0.3, tag: v1.0.2, tag: v1.0.1) Readme atualizado.MD
AFE9B0C (Origin/Master) init

Como alternativa, você também pode excluir uma tag e re-adquiri-la a um novo compromisso.

Compartilhando tags com outros usuários

Quando você pressiona seu código para o seu repositório remoto, as tags git não são empurradas automaticamente. Se você quiser compartilhar suas tags com outros usuários, você deve empurrá -los exclusivamente.

As tags podem ser empurradas assim:

$ git push origin v1.0.4
Contando objetos: 12, feito.
Compressão delta usando até 4 threads.
Objetos de compactação: 100% (4/4), feito.
Objetos de escrita: 100% (12/12), 902 bytes | 150.00 kib/s, feito.
Total 12 (delta 0), reutilizado 0 (delta 0)
Para/usuários/zakh/_work/learngit/git_tagging/remote/project_mayhem
* [nova tag] V1.0.4 -> v1.0.4

Agora, se outros usuários clonarem o repositório remoto, eles só verão a tag que foi empurrada (“V1.0.4 ”neste caso).

Usando ramificações vs tags

Ramos são úteis para novos recursos ou experimentando. Geralmente, você deseja ramificar quando há trabalho futuro que precisa ser feito e o trabalho é perturbador para o seu desenvolvimento atual. Por outro lado, as tags são mais úteis como instantâneos. Você deve usá -los para lembrar coisas específicas que você já fez.

Para concluir

A tag git é um recurso subutilizado que pode fornecer uma ótima maneira de acompanhar os lançamentos e recursos especiais. Se você configurar boas práticas em torno das tags, isso pode ajudá -lo a se comunicar facilmente com sua equipe de desenvolvimento e simplificar seus processos de desenvolvimento.

Um estudo mais aprofundado:

  • https: // git-scm.com/book/en/v2/git-basics marcando
  • https: // softwareEngineering.Stackexchange.com/questões/165725/ramificação e maior prática
  • https: // www.Atlassiano.com/git/tutoriais/inspecionando-a-repositório/git-tag
  • https: // pt.Wikipedia.org/wiki/software_versioning
  • https: // www.TechOpedia.com/definição/25977/versão de software