Посібник із розуміння gitk? [зачинено]


83

Я представляю git команді розробників, і я вважаю gitk чудовим інструментом. Це також досить важко зрозуміти, оскільки розуміння gitk вимагає розуміння як історії git, так і самого інструмента перегляду.

Хтось має якісь добрі посилання на щось на зразок "посібника для початківців з історії git за допомогою gitk"?



Блог lostechies.com/joshuaflanagan/2010/09/03/… проходить презентацію gitk і може допомогти зрозуміти меню gitk, що клацне правою кнопкою миші.
koppor

Відповіді:


93

Я ніколи нічого не бачив спеціально для gitk. Ось удар із точки зору "як це працює". Знання команд, які стоять за всім (або, принаймні, загалом еквівалентним), допомагає навчитися легше використовувати інструменти командного рядка, а також показує, де шукати в документації, щоб краще зрозуміти gitk!

Меню файлу

Це дещо змінилося за останні кілька основних версій - я описую поточний стан.

  • оновлення та перезавантаження: Це, мабуть, найбільш заплутане. Повторне завантаження оновлює все так, ніби ви запускали програму з тією ж конфігурацією. Це означає, що якщо гілка була видалена / перебазована, якщо деякі коміти зараз звисають, ви їх більше не бачите. Оновлення, з іншого боку, оновлює всю інформацію, але все одно відображає всі коміти, які були раніше показані. Це чудова річ для використання, якщо ви перебазуєте і хочете переконатись, що не заплутали - ви можете побачити як оригінальну, так і перебазовану версію.

  • посилання: досить очевидно. До посилань належать теги та гілки (які можуть бути віддаленими). Ви можете перечитати їх і зробити список, щоб натиснути певний, щоб показати його в історії.

Перегляди

Як зазначається на man-сторінці , gitk використовує параметри git-rev-list , щоб допомогти вказати, яку історію слід показувати. Їх також можна встановити інтерактивно в меню "вигляд". Сторінка користувача - це чудове місце, щоб знайти більше інформації про способи керування переглядами (це переважно в розділі обмеження комітів). Якщо ви подивилисьgit-log раніше, ви бачили багато цього.

Допомога

Тут є список прив’язок клавіш! Солодкий.

Контекстне меню

Це представляє кілька типових команд git з порцеляни, як правило, у загальному / типовому режимі роботи. Перелік їх допоможе вам принаймні знайти потрібну документацію, щоб зрозуміти, чим вони займаються, якщо ви цього ще не зробили!

  • git-diff (Різниця вибрана <->
  • git-format-patch (зробити патч)
  • git-тег (створити тег)
  • git-diff-дерево (запис коміту у файл, рідко використовується)
  • git-галузь
  • git-cherry-pick
  • git-reset (скинути гілку сюди) Це запропонує вам м’який, змішаний або жорсткий, з коротким нагадуванням про те, що кожен робить. Більш довгий опис на сторінці користувача, але, звичайно, ви повинні розуміти концепцію індексу, щоб насправді отримати його.

Команди "позначити фіксацію" та відповідні команди на цьому етапі повинні бути зрозумілими.

У контекстному меню для гілки ми маємо git-checkout та режим -d(видалення) git-branch.

Середній розділ

  • Ідентифікатор SHA1: хеш поточного коміту. Дуже корисно для копіювання / вставлення в термінал для виконання дії над даним комітом, який ви використовували gitk. Ви також можете вставити хеші сюди.

  • Кнопки вперед / назад, номер рядка ... очевидно!

  • Знайдіть! Варіанти тут знову досить зрозумілі, але для освіти кожного вони аналогічні параметрам git-log : "містять" є --grep, "торкаючись шляхів" - аргументи, а додавання / видалення рядка - -S(кирка).

Панель повідомлення / різниці

Тут ми маємо повідомлення коміту разом з результатами git-diff - це щось на зразок використання git-log -p, з невеликою додатковою:

  • "Гілки" еквівалентно git branch -a --contains=<commit>

  • "Передує" / "Підписується" еквівалентно git describe [--contains] <commit>( git-описувати )


Досить справедливо для команд меню gitk, +1 для цього. У вас добре справляється з "gitk", але я справді сподівався на якесь пояснення поєднання gitk та історії.
krosenvold

Я хотів би зробити це кращою відповіддю! Здається, я не надто чітко розумію, що ви маєте на увазі під поясненням історії git. Це поняття розгалуження та злиття потребує пояснення? Той факт, що коміти безпосередньо залежать від попереднього коміту через їх хеш? Здається, що коли ти буквально бачиш історію на екрані, то вже не так багато можна пояснити.
Cascabel

Вибачте, можливо, я тупий, але я не розумію, як просто git commit -aчи навіть git addу gitk. Щось мені не вистачає?
ubershmekel

2
@ubershmekel gitk не робить жодної з цих речей; якщо ви хочете графічний інтерфейс для них, це вбудований git gui. Однак це питання стосується лише gitk, і gitk, по суті, є інструментом перегляду історії (з невеликою кількістю маніпуляцій з гілками).
Cascabel

24

Ось вступ до візуалізації історії гілок у gitk зі скріншотами.

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

  1. У верхній лівій панелі показано серію комітів для цього сховища, а найновіші зверху.
  2. Здійснено три фіксації, усі від Тоні Старка.
  3. Повідомлення коміту для останнього коміту було “третім комітом”
  4. Існує одна локальна гілка, яка називається “master”, вона вказує на найновіший коміт
  5. Існує одна віддалена гілка посилання: гілка “master” із віддаленого сховища з назвою “origin”, вона також вказує на найновіший коміт
  6. Жовта крапка біля верхнього коміту вказує на те, що це моментальний знімок у моїй робочій папці (іменований HEAD)
  7. Я виділив другий коміт, щоб побачити його деталі в нижній панелі
  8. Фіксація SHA (унікальний ідентифікатор, схожий на номер версії диверсії) другого коміту є
    субверсії коміту 3d024dd9e4a83d8c6a9a143a68b75d4b872115a6
  9. У нижньому правому куті відображається список файлів, на які вплинув другий коміт
  10. У нижньому лівому куті показані деталі коміту, включаючи повну різницю
  11. Натискання файлу в нижній правій області прокручує різницю в нижній лівій панелі до відповідного розділу 12.

3

Те, що новачки могли б насправді використовувати з точки зору "поєднання gitk та історії", - це конкретне пояснення того, як розпізнати те, що сталося, переглянувши подання дерева gitk.

Наскільки я зрозумів - правильним способом подивитися на дерево є (звичайно):

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

Скріншоти також були б вдячні.

Дерево фактично представляє поточний стан сховища. Що було б чудово, якби ми змогли сказати, що сталося, подивившись на вид дерева.

Дякую

v.


1
4. ... гілка, 6. ... зовсім не, оскільки вона просто переупорядковує існуючі коміти
centic

1

Єдине, що мені здається корисним в інтерфейсі gitk - це приємний (барвистий) огляд гілок ..

Якщо ви хочете графічний інтерфейс для git, перевірте TortoiseGit на Windows або GitX на Mac або QGit на Linux.


4
Я думаю, це трохи поспішне рішення. Звичайно, конструктор дій - це круто, але багато цього вбудованого в контекстному меню gitk відсутнє. gitk надає дуже простий спосіб маніпулювати гілками за допомогою візуального зворотного зв'язку, що особливо корисно для нових користувачів.
Cascabel

1
Мені більше подобається cli, але іноді я закликаю gitk просто для того, щоб побачити гілки та злиття. Я б не рекомендував інтерфейс gitk для нових користувачів .. Можливо, відлякати їх?
Davy Landman

Як не дивно, я думаю, що ви обидва праві.
innaM
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.