GitK
O Gitk é um navegador de repositório gráfico. Foi o primeiro desse tipo. Ele pode ser pensado como wrapper de GUI para git log
. É útil para explorar e visualizar o histórico do repositório. Está escrito em tcl/tk, o que o torna portátil em todos os sistemas operacionais. O gitk
é mantido por Paul Mackerras como um projeto independente, separado do núcleo do Git. As versões estáveis são distribuídas como parte do pacote Git para a conveniência dos usuários finais. O Gitk pode ser uma ajuda de aprendizagem útil para iniciantes no Git.
Gitk overview
O Gitk pode ser um utilitário de aprendizado útil para quem é novo no controle de versão ou para aqueles que estão fazendo a transição de outro sistema de controle de versão, como o subversion. O Gitk é um utilitário de conveniência que vem com o Git core. Ele proporciona uma interface gráfica do usuário que ajuda na visualização da mecânica interna do Git. Outras GUIs popular do Git são o git-gui e o próprio Sourcetree da Atlassian.
Uso
O Gitk é invocado semelhante ao git log
. A execução do comando gitk
vai iniciar a interface do usuário do Gitk, que vai ser semelhante a seguinte:
O painel superior esquerdo exibe as confirmações no repositório, com o mais recente no topo. O canto inferior direito exibe a lista de arquivos afetados pelo commit selecionada. O painel inferior esquerdo exibe as informações do commit e a diferença completa. Clicar em um arquivo no painel inferior direito focaliza a diferença no painel inferior esquerdo para a seção relevante.
O Gitk vai refletir no estado atual do repositório Se o estado do repositório for modificado por meio do uso separado da linha de comando, como alterar ramificações, o Gitk precisa ser recarregado. O Gitk pode ser recarregado no menu Arquivo -> Recarregar.
Material relacionado
Como mover um Repositório do Git completo
VER SOLUÇÃO
Aprenda a usar o Git com o Bitbucket Cloud
Por padrão, o Gitk vai renderizar o histórico atual dos commits. O Gitk tem uma variedade de opções de linha de comando que podem ser passadas na inicialização. Essas opções restringem a lista de commits renderizadas para a visualização de nível superior do Gitk. A forma geral de execução com essas opções de revisão é a seguinte:
Opções
gitk [<options>] [<revision range>] [--] [<path>…]
<revision range>
Um intervalo de revisão na forma "
pode ser passado para mostrar todas as revisões entre
e de volta para
. Como alternativa, uma única revisão pode ser aprovada.
<path>…
Limite os commits a um caminho de arquivo específico. Para isolar caminhos de nomes de revisão, use "--" para separar os caminhos de qualquer opção anterior.
--all
Mostra todas as ramificações, marcações, refs.
--branches[=<pattern>] --tags[=<pattern>] --remotes[=<pattern>]
Displays the selected item (branches, tags, remotes) as if they were mainline commits. When <pattern>
is passed, further limits refs to ones matching the specified pattern
--since=<date>
Mostrar confirmações mais recentes do que a data especificada.
--until=<date>
Mostrar as confirmações mais antigas do que a data especificada.
--date-order
Classifica as confirmações por data.
--merge
Mostrar confirmações que modificam arquivos em conflito que foram identificados durante um merge
--left-right
Mostra categorias informativas que indicam de que lado de um commit de comparação é. Os commits do lado esquerdo são prefixados com um< símbolo e os da direita com um> símbolo.
--ancestry-path
Quando for dado um intervalo de commits para exibir (por exemplo. commit1.. commit2 ou commit2 commit1
), exibe apenas commits que existem direto na cadeia de ancestralidade entre o commit1
e commit2
, ou seja, commits que são descendentes de commit1
e ancestrais de commit2
. (Consulte Simplificação do" histórico" no git-log (1)
para uma explicação mais detalhada.)
L<start>,<end>:<file>
Opções poderosas que permitem rastrear o histórico de um determinado intervalo de números de linha de código.
Discussion & examples
Para apresentar qualquer resultado valioso, o Gitk precisa de um repositório subjacente com histórico comprometido. O código a seguir é uma sequência de comandos bash que vai criar um novo repositório com duas ramificações que têm confirmações e foram mescladas em uma.
mkdir gitkdemo &&
cd gitkdemo &&
git init . &&
echo "hello world" > index.txt &&
git add index.txt &&
git commit -m "added index.txt with hello world content"
Este repositório de demonstração vai ser um bom exemplo para explorar com o Gitk. Essa sequência de comandos cria um novo repositório com 1 commit e um arquivo index.txt
. Vamos agora invocar o gitk
para examinar o repositório.
Can Gitk compare two commits?
Vamos continuar com o repositório de demonstração e criar um commit adicional:
echo "prpended content to index" >> index.txt &&
git commit -am "prepended content to index"
Assim que os comandos em andamento forem executados, o gitk
precisa ser recarregado. Recarregue o gitk
na linha de comando ou use a GUI e navegue até Arquivo -> Recarregar
. Depois de recarregado, devemos ver a nova confirmação
.
Podemos ver que a referência da ramificação principal
agora está apontada para a nova confirmação. Para comparar essas duas confirmações, usamos o painel de histórico superior esquerdo. No painel de histórico, clique em um commit que vai ser a base do diff. Depois de selecionado, clique com o botão direito do mouse no segundo commit para abrir um menu de contexto.
Esse menu de contexto vai oferecer as seguintes opções
Diff this -> selected
Diff selected -> this
Selecionar uma dessas opções vai fazer com que uma diferença entre as duas confirmações apareça no painel inferior esquerdo, que no exemplo vai ser semelhante a:
A saída do diff nos mostra que o index.txt
tinha uma nova linha de "conteúdo anexado ao índice" adicionada entre as duas confirmações.
How to use Gitk to compare two branches
Continuando com o repositório de exemplo, vamos criar uma nova ramificação.
git checkout -b new_branch &&
echo "new branch content" > new_branch_file.txt &&
git add new_branch_file.txt &&
git commit -m "new branch commit with new file and prepended content" &&
echo "new branch index update" >> index.txt &&
git commit -am "new branch commit to index.txt with new content"
A sequência de comandos em andamento vai criar uma nova ramificação chamada new_branch
e vai adicionar o arquivo new_branch_file.txt
a ela. Além disso, um novo conteúdo é adicionado ao index.txt
e uma confirmação adicional é feita para essa atualização. Agora temos uma nova ramificação que está 2 confirmações à frente do main. Precisamos recarregar o Gitk para refletir essas mudanças.
Essa é uma ótima oportunidade de aprendizado para discutir o mecanismo de ramificação do Git. O Gitk exibe as confirmações como uma sequência em linha reta de confirmações. O termo ramificação implica que devemos esperar uma ramificação ou bifurcação no cronograma. As ramificações do Git são diferentes de outros sistemas de controle de versão. No Git, uma ramificação é um ponteiro para uma confirmação. O ponteiro se move para as confirmações à medida que são criados. Quando você cria um branch git
, você não está alterando nada na estrutura do repositório ou na árvore de origem. Você está apenas criando um novo ponteiro.
Para comparar as confirmações que diferem entre as 2 ramificações, o Gitk precisa ser iniciado com um intervalo de revisão especificado. Ao executar gitk main.. new_branch
, vai abrir o Gitk apenas com as confirmações entre as duas referências de ramificação
Este é um utilitário poderoso para comparar ramificações.
Gitk vs. Git Gui
Git Gui é outra interface gráfica de usuário baseada em Tcl/Tk para o Git. Enquanto o Gitk se concentra em navegar e visualizar o histórico de um repositório, o Git Gui se concentra em refinar confirmações
individuais, anotação de arquivo único e não mostra o histórico do projeto. O Git Gui também proporciona ações de menu para iniciar o Gitk para exploração do histórico. O Git Gui também é invocado a partir da linha de comando executando git gui
.
Gitk summary
Em conclusão, o Gitk é um wrapper de interface gráfica para git log
. O Gitk é poderoso para visualizar e explorar a história de um repositório. O Gitk também é uma ferramenta útil para aprender os dados internos do Git.
Compartilhar este artigo
Próximo tópico
Leitura recomendada
Marque esses recursos para aprender sobre os tipos de equipes de DevOps ou para obter atualizações contínuas sobre DevOps na Atlassian.