Przewodnik po zrozumieniu gitk? [Zamknięte]

83

Przedstawiam git zespołowi programistów i uważam, że gitk jest niesamowitym narzędziem. Jest to również dość trudne do zrozumienia, ponieważ zrozumienie gitk wymaga zrozumienia zarówno historii git, jak i samego narzędzia przeglądarki.

Czy ktoś ma jakieś dobre odniesienia do czegoś takiego jak „przewodnik dla początkujących po historii git z gitk”?

krosenvold
źródło
Blog lostechies.com/joshuaflanagan/2010/09/03/ ... przedstawia prezentację gitk i może pomóc w zrozumieniu menu gitk wyświetlanego po kliknięciu prawym przyciskiem myszy.
koppor

Odpowiedzi:

93

Nigdy nie widziałem niczego specjalnie dla gitk. Oto próba z punktu widzenia „jak to działa”. Znajomość poleceń, które stoją za wszystkim (lub przynajmniej ogólnie ich odpowiedników), pomaga nauczyć się korzystać z narzędzi wiersza poleceń, a także pokazuje, gdzie szukać w dokumentacji, aby lepiej zrozumieć gitk!

Menu Plik

Zmieniło się to nieco w ciągu ostatnich kilku głównych wersji - opisuję obecny stan.

  • aktualizuj i przeładuj: To prawdopodobnie najbardziej zagmatwana rzecz. Przeładuj odświeża wszystko tak, jakbyś uruchomił program od nowa z tą samą konfiguracją. Oznacza to, że jeśli gałąź została usunięta / zmieniona, jeśli niektóre zatwierdzenia teraz wiszą, nie widzisz ich już. Z drugiej strony Update odświeża wszystkie informacje, ale nadal pokazuje wszystkie zmiany, które zostały wcześniej pokazane. Jest to doskonała opcja, jeśli chcesz zmienić bazę i chcesz mieć pewność, że nie zepsułeś - możesz zobaczyć zarówno wersję oryginalną, jak i zmienioną.

  • odniesienia: dość oczywiste. Odniesienia obejmują tagi i gałęzie (które mogą być zdalne). Możesz je ponownie przeczytać i wyświetlić listę, aby kliknąć konkretny, aby wyświetlić go w historii.

Wyświetlenia

Jak mówi strona podręcznika, gitk używa opcji git-rev-list, aby pomóc określić, jaka historia powinna być pokazana. Można je również ustawić interaktywnie w menu „Widok”. Strona podręcznika jest doskonałym miejscem, aby znaleźć więcej informacji o sposobach kontrolowania widoków (głównie w sekcji ograniczającej zmiany). Jeśli spojrzałeś git-logwcześniej, zobaczyłeś dużo tego.

Wsparcie

Tutaj jest lista skrótów klawiszowych! Słodkie.

Menu kontekstowe

Przedstawia kilka typowych poleceń git porcelain, ogólnie w zwykłym / domyślnym trybie działania. Ich lista przynajmniej pomoże ci znaleźć odpowiednią dokumentację, aby zrozumieć, co robią, jeśli jeszcze tego nie zrobiłeś!

  • git-diff (Porównaj to <-> zaznaczone
  • git-format-patch (stwórz łatkę)
  • git-tag (utwórz tag)
  • git-diff-tree (zapisz zatwierdzenie do pliku, rzadko używane)
  • git-branch
  • git-cherry-pick
  • git-reset (resetuj gałąź do tego miejsca) To zapyta o miękkie, mieszane lub twarde, z krótkim przypomnieniem, co każdy robi. Dłuższy opis na stronie podręcznika, ale oczywiście musisz zrozumieć pojęcie indeksu, aby go naprawdę uzyskać.

W tym momencie polecenie „zaznacz zatwierdzenie” i powiązane polecenia powinny być oczywiste.

W menu kontekstowym dla gałęzi mamy git-checkout i -dtryb (usuwania) git-branch.

Środkowa sekcja

  • Identyfikator SHA1: skrót bieżącego zatwierdzenia. Bardzo przydatne do kopiowania / wklejania do terminala, aby wykonać akcję na danym zatwierdzeniu, do którego znalezienia użyłeś gitk. Możesz również wkleić tutaj skróty.

  • Przyciski do przodu / do tyłu, numer wiersza ... oczywiste!

  • Odnaleźć! Opcje tutaj są znowu dość oczywiste, ale dla edukacji wszystkich są analogiczne do parametrów git-log : „zawierający” to --grep, „dotykające ścieżki” to argumenty, a dodawanie / usuwanie łańcucha to -S(kilof).

Okienko wiadomości / różnic

Tutaj mamy wiadomość o zatwierdzeniu wraz z wyjściem git-diff - to jest coś w rodzaju używania git-log -p, z odrobiną dodatkowych:

  • „Oddziały” to odpowiednik git branch -a --contains=<commit>

  • „Poprzedza” / „Obserwuje” jest równoważne z git describe [--contains] <commit>( git-opisać )

Cascabel
źródło
W porządku dla poleceń menu gitk, +1 do tego. Dobrze sobie radzisz z częścią „gitk”, ale naprawdę liczyłem na wyjaśnienie połączenia gitk i historii.
krosenvold
Chciałbym, żeby to była lepsza odpowiedź! Chyba nie rozumiem zbyt dobrze, co masz na myśli, mówiąc o wyjaśnieniu historii git. Czy to koncepcja rozgałęziania i łączenia wymaga wyjaśnienia? Fakt, że zatwierdzenia zależą bezpośrednio od poprzedniego zatwierdzenia poprzez ich hash? Wydaje się, że kiedy dosłownie zobaczysz historię na ekranie, nie ma wiele do wyjaśnienia.
Cascabel
Przepraszam, może jestem tępy, ale nie rozumiem, jak po prostu git commit -alub nawet git addw gitk. Czy jest coś, czego mi brakuje?
ubershmekel
2
@ubershmekel gitk nie robi żadnej z tych rzeczy; jeśli chcesz mieć dla nich GUI, wbudowany jest git gui. To pytanie dotyczy jednak tylko gitk, a gitk jest zasadniczo narzędziem do przeglądania historii (z odrobiną manipulacji gałęziami).
Cascabel
24

Oto wprowadzenie do wizualizacji historii gałęzi w gitk ze zrzutami ekranu.

http://lostechies.com/joshuaflanagan/2010/09/03/use-gitk-to-understand-git/

  1. Lewy górny panel pokazuje serię zatwierdzeń do tego repozytorium, z najnowszymi na górze.
  2. Były trzy zatwierdzenia, wszystkie przez Tony'ego Starka.
  3. Komunikat zmiany dotyczący ostatniego zatwierdzenia to „trzecie zatwierdzenie”
  4. Istnieje jedna gałąź lokalna o nazwie „master”, która wskazuje na najnowsze zatwierdzenie
  5. Istnieje jedna zdalna gałąź referencyjna: gałąź „master” ze zdalnego repozytorium o nazwie „origin”, wskazuje również na najnowsze zatwierdzenie
  6. Żółta kropka obok górnego zatwierdzenia wskazuje, że jest to migawka aktualnie znajdująca się w moim folderze roboczym (nazywana HEAD)
  7. Podkreśliłem drugie zatwierdzenie, więc mogę zobaczyć jego szczegóły w dolnym okienku
  8. SHA zatwierdzenia (unikalny identyfikator, podobny do numeru wersji
    podwersji ) drugiego zatwierdzenia to 3d024dd9e4a83d8c6a9a143a68b75d4b872115a6
  9. W prawym dolnym rogu wyświetlana jest lista plików, na które ma wpływ drugie zatwierdzenie
  10. Dolny lewy pokazuje szczegóły zatwierdzenia, w tym pełną różnicę
  11. Kliknięcie pliku w prawym dolnym panelu powoduje przewinięcie różnicy w lewym dolnym panelu do odpowiedniej sekcji 12.
idursun
źródło
3

To, czego nowicjusze naprawdę mogliby użyć w odniesieniu do „połączenia gitk i historii”, to konkretne wyjaśnienie, jak rozpoznać, co się stało, patrząc na widok drzewa gitk.

O ile mi wiadomo - właściwy sposób patrzenia na drzewo to (oczywiście):

 1. each node is a commit
 2. ultimate parent is at the bottom
 3. direct child to a commit is the one that happened first in the same branch (no matter who did it)
 4. the node with 2 or more children indicates ... ?
 5. merge commit node has 2 parents.
 6. rebase is recognized ... ?

Zrzuty ekranu również byłyby mile widziane.

Drzewo faktycznie reprezentuje aktualny stan repozytorium. Byłoby wspaniale, gdybyśmy mogli powiedzieć, co się stało, patrząc na widok drzewa.

Dzięki

v.

tishma
źródło
1
4. ... gałąź, 6. ... wcale, ponieważ po prostu zmienia kolejność istniejących zatwierdzeń
centic
1

Jedyne, co uważam za przydatne w interfejsie gitk, to ładny (kolorowy) przegląd gałęzi.

Jeśli chcesz mieć GUI dla git, sprawdź TortoiseGit w systemie Windows lub GitX na Macu lub QGit w systemie Linux.

Davy Landman
źródło
4
Myślę, że to trochę pośpieszny osąd. Jasne, kreator działań jest fajny, ale brakuje wielu wbudowanych rzeczy w menu kontekstowym gitk. gitk zapewnia bardzo łatwy sposób manipulowania gałęziami dzięki wizualnej informacji zwrotnej, co jest szczególnie przydatne dla nowych użytkowników.
Cascabel
1
Bardziej lubię CLI, ale czasami wywołuję gitk tylko po to, aby zobaczyć gałęzie i połączenia. Nie polecałbym interfejsu gitk nowym użytkownikom .. Prawdopodobnie ich odstraszysz?
Davy Landman
O dziwo, myślę, że oboje macie rację.
innaM