Gitk
Gitk è un browser di repository grafico. È stato il primo del suo genere. Può essere pensato come un wrapper GUI per git log
. È utile per esplorare e visualizzare la cronologia di un repository. È scritto in tcl/tk, il che lo rende portabile su tutti i sistemi operativi. gitk
è gestito da Paul Mackerras come progetto indipendente, separato da Git core. Le versioni stabili sono distribuite come parte della suite Git per la comodità degli utenti finali. Gitk può essere un utile aiuto didattico per i nuovi arrivati su Git.
Gitk overview
Gitk può essere un'utile utilità di apprendimento per chi si approccia per la prima volta al controllo delle versioni o per chi sta passando da un altro sistema di controllo delle versioni come subversion. Gitk è una comoda utilità fornita con Git principale. Offre un'interfaccia utente grafica che aiuta con la visualizzazione della meccanica interna di Git. Altre GUI Git popolari sono git-gui e Sourcetree di Atlassian.
Utilizzo
Gitk è richiamato in modo simile a git log
. L'esecuzione del comando gitk
avvierà l'interfaccia utente di Gitk che sarà simile alla seguente:
Il riquadro in alto a sinistra mostra i commit nel repository, con gli ultimi in alto. In basso a destra viene visualizzato l'elenco dei file interessati dal commit selezionato. Il riquadro in basso a sinistra mostra i dettagli del commit e la differenza completa. Facendo clic su un file nel riquadro in basso a destra, la differenza nel riquadro in basso a sinistra viene focalizzata sulla sezione pertinente.
Gitk rifletterà lo stato attuale del repository. Se lo stato del repository viene modificato tramite un utilizzo separato della riga di comando, ad esempio cambiando i rami, Gitk dovrà essere ricaricato. Gitk può essere ricaricato dal menu File -> Ricarica.
materiale correlato
Come spostare un repository Git completo
Scopri la soluzione
Impara a utilizzare Git con Bitbucket Cloud
Per impostazione predefinita, Gitk visualizzerà la cronologia corrente dei commit. Gitk ha una varietà di opzioni della riga di comando che possono essere trasmesse all'inizializzazione. Queste opzioni limitano principalmente l'elenco dei commit renderizzati alla visualizzazione principale di Gitk. La forma generale di esecuzione con queste opzioni di revisione è la seguente:
Opzioni
gitk [<options>] [<revision range>] [--] [<path>…]
<revision range>
Un intervallo di revisioni sotto forma di "
può essere passato per mostrare tutte le revisioni tra
e . In alternativa, può essere passata un'unica revisione.
<path>…
Limita i commit a un percorso di file specifico. Per isolare i percorsi dai nomi delle revisioni, utilizza "—" per separare i percorsi da tutte le opzioni precedenti.
--all
Mostra tutti i branch, i tag, i riferimenti.
--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>
Esegue il rendering dei commit più recenti della data specificata.
--until=<date>
Esegue il rendering dei commit più vecchi della data specificata.
--date-order
Ordina i commit per data.
--merge
Mostra i commit che modificano i file in conflitto identificati durante una fusione
--left-right
Esegue il rendering di etichette informative che indicano da quale lato di una differenza proviene un commit. I commit dal lato sinistro sono preceduti da un simbolo < e quelli dal lato destro da un simbolo >.
--ancestry-path
Quando viene assegnato un intervallo di commit da visualizzare (ad es. commit1..commit2 o commit2 commit1
), visualizza solo i commit che esistono direttamente nella catena di predecessori tra commit1
e commit2
, ovvero i commit che sono sia discendenti di commit1
che predecessori di commit2
. (Per una spiegazione più dettagliata, consulta "Semplificazione della cronologia" in git-log (1)
).
L<start>,<end>:<file>
Potenti opzioni che ti consentono di tracciare la cronologia di un determinato intervallo di numeri di riga di codice.
Discussion & examples
Per fornire qualsiasi risultato di valore, Gitk ha bisogno di un repository sottostante con una cronologia dedicata. Il codice seguente è una sequenza di comandi bash che creerà un nuovo repository con due branch che hanno commit e sono stati fusi in uno solo.
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"
Questo repository demo sarà un buon esempio da esplorare con Gitk. Questa sequenza di comandi crea un nuovo repository con 1 commit e un file index.txt
. Richiamiamo ora gitk
per esaminare il repository.
Can Gitk compare two commits?
Continuando con il nostro repository demo, ora creiamo un commit aggiuntivo:
echo "prpended content to index" >> index.txt &&
git commit -am "prepended content to index"
Una volta eseguiti i comandi procedenti, sarà necessario ricaricare gitk
. Ricarica gitk
dalla riga di comando o usa la GUI e vai a File -> Ricarica
. Una volta ricaricato, dovremmo vedere il nostro nuovo commit
.
Possiamo vedere che il riferimento del branch principale
ora è puntato sul nuovo commit. Per confrontare questi due commit utilizziamo il pannello della cronologia in alto a sinistra. Nel pannello della cronologia, fai clic su un commit che sarà la base della differenza. Una volta selezionato, fai clic con il pulsante destro del mouse su un secondo commit per aprire un menu contestuale.
Questo menu contestuale fornirà le seguenti opzioni:
Diff this -> selected
Diff selected -> this
Selezionando una di queste opzioni verrà visualizzata una differenza tra i due commit nel riquadro in basso a sinistra che nel nostro esempio sarà simile a:
L'output differenza ci mostra che a index.txt
è stata aggiunta una nuova riga di "contenuti predefiniti da indicizzare" tra i due commit.
How to use Gitk to compare two branches
Continuando con il nostro repository di esempio, creiamo un nuovo branch.
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"
La sequenza di comandi precedente creerà un nuovo branch chiamato new_branch
e vi aggiungerà il file new_branch_file.txt
. Inoltre, vengono aggiunti nuovi contenuti a index.txt
e viene effettuato un commit aggiuntivo per quell'aggiornamento. Ora abbiamo un nuovo branch con 2 commit davanti a quello principale. Dobbiamo ricaricare Gitk per poter vedere questi cambiamenti.
Questa è un'ottima opportunità di apprendimento per parlare del meccanismo di ramificazione di Git. Gitk mostra i commit come una sequenza di commit in linea retta. Il termine branch implica che dovremmo aspettarci un «ramo» o un fork nella cronologia. I branch Git sono diversi dagli altri sistemi di controllo delle versioni. In Git, un branch è un puntatore a un commit. Il puntatore si sposta sui commit man mano che vengono creati. Quando crei un branch git
, non modifichi nulla nella struttura del repository o nell'albero delle sorgenti. Stai solo creando un nuovo puntatore.
Per confrontare i commit che differiscono tra i 2 branch, Gitk deve essere lanciato con un intervallo di revisioni specificato. L'esecuzione di gitk main..new_branch
aprirà Gitk con solo i commit tra i due riferimenti del branch
Questa è una potente utilità per confrontare i branch.
Gitk contro Git Gui
Git Gui è un'altra interfaccia utente grafica basata su Tcl/Tk per Git. Mentre Gitk si concentra sulla navigazione e sulla visualizzazione della cronologia di un repository, Git Gui si concentra sul perfezionamento dei singoli commit
, sull'annotazione di singoli file e non mostra la cronologia del progetto. Git Gui fornisce anche azioni di menu per avviare Gitk per l'esplorazione della cronologia. Git Gui viene anche richiamato dalla riga di comando eseguendo git gui
.
Gitk summary
In conclusione, Gitk è un wrapper di interfaccia grafica per git log
. Gitk è incredibilmente potente per la visualizzazione e l'esplorazione della cronologia di un repository. Gitk è anche uno strumento utile per apprendere le nozioni interne di Git.
Condividi l'articolo
Argomento successivo
Letture consigliate
Aggiungi ai preferiti queste risorse per ricevere informazioni sui tipi di team DevOps e aggiornamenti continui su DevOps in Atlassian.