Close

Gitk

Gitk to graficzna przeglądarka repozytorium. Była pierwszym dostępnym rozwiązaniem tego typu. Stanowi interfejs graficzny dla polecenia git log. Przydaje się do przeglądania i wizualizacji historii repozytorium. Powstała za pomocą zestawu tcl/tk, co zapewnia jej zgodność z różnymi systemami operacyjnymi. Administratorem gitk jest Paul Mackerras, a ponieważ jest to projekt niezależny, nie należy do trzonu systemu Git. Stabilne wersje interfejsu udostępniane są użytkownikom końcowym jako element pakietu Git. Przeglądarka ta może być pomocna w nauce dla osób rozpoczynających przygodę z Git.


Gitk overview


Użycie


Interfejs Gitk wywołuje się podobnie jak git log. Wykonanie polecenia gitk uruchamia interfejs użytkownika Gitk, który wygląda mniej więcej następująco:

Initial kopiera

W lewym górnym panelu wyświetlane są commity w repozytorium — począwszy od najnowszego. W prawym dolnym znajduje się lista plików objętych wybranym commitem. Lewy dolny panel zawiera szczegóły commitu i pełny zestaw różnic. Kliknięcie pliku w prawym dolnym panelu powoduje ograniczenie zakresu różnic w lewym dolnym panelu do odpowiedniej sekcji.

Gitk odzwierciedla bieżący stan repozytorium. W przypadku modyfikacji stanu repozytorium przez osobne użycie wiersza poleceń, np. w celu zmiany gałęzi, konieczne jest przeładowanie Gitk. Można to zrobić, klikając kolejno: menu File -> Reload.

Bazy danych
materiały pokrewne

Jak przenieść pełne repozytorium Git

Logo Bitbucket
POZNAJ ROZWIĄZANIE

Poznaj środowisko Git z rozwiązaniem Bitbucket Cloud

Domyślnie Gitk przedstawia bieżącą historię commitów. Gitk udostępnia liczne opcje wiersza poleceń, które można przekazać podczas uruchamiania. Pozwalają one przede wszystkim ograniczyć listę commitów wyświetlanych w widoku najwyższego poziomu Gitk. Ogólna forma polecenia z uwzględnieniem opcji wygląda następująco:

Opcje


    gitk [<options>] [<revision range>] [--] [<path>…]

    <revision range>

Za pomocą opcji .. można przekazać zakres wersji, aby wyświetlić wszystkie zmiany od wartości do . Można też wskazać pojedynczą wersję.

  <path>…

Ogranicza commity do określonej ścieżki pliku. W celu uniknięcia przemieszenia ścieżek i nazw wersji użyj symbolu „--”, aby oddzielić ścieżki od wcześniejszych opcji.

--all

Wyświetla wszystkie gałęzie, tagi i odniesienia.

--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>

Wyświetla commity nowsze względem podanej daty.

    --until=<date>

Wyświetla commity starsze względem podanej daty.

    --date-order

Sortuje commity według daty.

    --merge

Przedstawia commity, które modyfikują pozostające w konflikcie pliki zidentyfikowane podczas scalania.

    --left-right

Tworzy informacyjne etykiety wskazujące, z której strony wykazu pochodzą commity. Commity z lewej są poprzedzone symbolem <, a te z prawej symbolem >.

    --ancestry-path

W przypadku podania zakresu commitów do wyświetlenia (np. commit1.. commit2, commit2 commit1) wyświetlone zostają tylko commity występujące na osi zatwierdzeń bezpośrednio między commit1 a commit2, czyli będące jednocześnie nadrzędne względem commit1 i podrzędne względem commit2. (Aby uzyskać szczegółowe wyjaśnienie, patrz „Uproszczenie historii” w git-log(1)).

L<start>,<end>:<file>

Zaawansowane opcje pozwalające śledzić historię zakresu numerów wierszy kodu.

Discussion & examples


Aby dostarczać wartościowe dane wyjściowe, Gitk potrzebuje repozytorium bazowego z historią commitów. Poniższy kod to sekwencja poleceń bash, która utworzy nowe repozytorium z dwiema gałęziami z commitami scalonymi w jeden.

    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"

To demonstracyjne repozytorium będzie dobrym przykładem do zapoznania się z Gitk. Ta sekwencja poleceń tworzy nowe repozytorium z jednym zatwierdzeniem i plikiem index.txt. Teraz wywołamy przeglądarkę gitk, aby przejrzeć repozytorium.

First commit

Can Gitk compare two commits?


Kontynuując opracowywanie repozytorium demonstracyjnego, utwórzmy teraz dodatkowy commit:

 echo "prpended content to index" >> index.txt &&
    git commit -am "prepended content to index"

Po wykonaniu poleceń konieczne jest przeładowanie gitk. Przeglądarkę gitk można przeładować z poziomu wiersza poleceń albo z poziomu interfejsu, klikając File -> Reload. Po ukończeniu wczytywania powinniśmy ujrzeć nowy commit.

Next commit

We can see that the main branch ref is now pointed at the new commit. To compare these two commits we use the upper left history panel. Within the history panel click on a commit that will be the base of the diff. Once selected, right click on a second commit to open up a context menu.

Commit diff

To menu kontekstowe zawiera następujące opcje:

    Diff this -> selected
    Diff selected -> this

Wybranie którejkolwiek z tych opcji spowoduje, że w lewym dolnym okienku pojawi się wykaz różnic między dwoma commitami, który w naszym przykładzie będzie wyglądał następująco:

Diff output

Z wykazu różnic między dwoma commitami wynika, że w pliku index.txt dodano nowy wiersz „prepended content to index”.

How to use Gitk to compare two branches


Teraz, w ramach konfigurowania przykładowego repozytorium, utwórzmy nową gałąź:

    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"

Następująca sekwencja poleceń utworzy nową gałąź o nazwie new_branch i doda do niej plik new_branch_file.txt. Ponadto do pliku index.txt zostanie dodana nowa treść oraz powstanie dodatkowy commit dla tej aktualizacji. Teraz dysponujemy nową gałęzią, która znajduje się o dwa commity przed główną. Konieczne jest przeładowanie Gitk, aby odzwierciedlić zmiany.

New branch

To świetna okazja do omówienia mechanizmu rozgałęzienia w systemie Git. Gitk wyświetla commity w postaci prostej sekwencji. Termin gałąź oznacza, że powinniśmy spodziewać się „rozgałęzienia”, czyli rozwidlenia na osi czasu. Gałęzie Git opierają się na innych zasadach niż w pozostałych systemach kontroli wersji. W systemie Git gałąź jest wskaźnikiem do commitu. Wskaźnik zostaje przeniesiony do commitów podczas ich tworzenia. Gdy tworzona jest gałąź git, nie dochodzi do zmian w strukturze repozytorium ani w drzewie źródłowym. Po prostu tworzony jest nowy wskaźnik.

Do porównania commitów i znalezienia różnic między dwiema gałęziami konieczne jest uruchomienie interfejsu Gitk z określonym zakresem wersji. Zastosowanie polecenia gitk main.. new_branch spowoduje otwarcie Gitk wyłącznie z commitami między dwoma odwołaniami do gałęzi.

Compare branch

To wydajne narzędzie do porównywania gałęzi.

Gitk a Git Gui


Git Gui to kolejny graficzny interfejs użytkownika sytemu Git oparty na Tcl/Tk. Podczas gdy Gitk koncentruje się na nawigacji i wizualizacji historii repozytorium, Git Gui nie przedstawia historii projektu i przeznaczony jest przede wszystkim do doskonalenia poszczególnych commitów oraz dodawania adnotacji do pojedynczych plików. W menu Git Gui dostępne są opcje umożliwiające uruchomienie Gitk w celu wyświetlenia historii. Interfejs Git Gui również wywołuje się z wiersza poleceń za pomocą komendy git gui.

Gitk summary


Podsumowując, Gitk jest graficzną otoką git log. Gitk to wydajny interfejs do wizualizacji i przeglądania historii repozytorium. Stanowi również pomocne narzędzie do nauki działania elementów wewnętrznych systemu Git.


Udostępnij ten artykuł
Następny temat

Zalecane lektury

Dodaj te zasoby do zakładek, aby dowiedzieć się więcej na temat rodzajów zespołów DevOps lub otrzymywać aktualności na temat metodyki DevOps w Atlassian.

Ludzie współpracujący przy ścianie pełnej narzędzi

Blog Bitbucket

Ilustracja DevOps

Ścieżka szkoleniowa DevOps

Demonstracje funkcji z ekspertami Atlassian

Zobacz, jak Bitbucket Cloud współpracuje z Atlassian Open DevOps

Zapisz się do newslettera DevOps

Thank you for signing up