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
Gitk może być pomocnym narzędziem szkoleniowym dla osób rozpoczynających korzystanie z kontroli wersji lub przechodzących z innego tego typu systemu, np. subversion. Gitk to ułatwiające pracę narzędzie wchodzące w skład podstawowego pakietu Git. Ma graficzny interfejs użytkownika, który pomaga w wizualizacji wewnętrznych mechanizmów systemu Git. Innymi popularnymi interfejsami graficznymi Git są git-gui oraz Sourcetree firmy Atlassian.
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:
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.
materiały pokrewne
Jak przenieść pełne repozytorium Git
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.
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
.
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.
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:
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.
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.
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.