Потужний інструмент, якщо вміти з ним поводитися: використовуйте Git як сеньйор

Оленка Пилипчак

Розробник Якоб Беннет у своєму блозі на Medium пише, що Git — це потужний інструмент, яким приємно користуватися, якщо ви розумієте, як саме це робити. 

Він роками використовував Git у різних командах та проєктах. Хоча щодо деяких робочих процесів у Якоба непевна думка (наприклад, щодо squash), він все одно вважає цей інструмент дуже потужним та гнучким. Передаємо йому слово. 

Переглянемо Git-логи

Git-логи не дуже зручні для роботи «з коробки».

Git log є базовим

Використання git log дає вам певну інформацію. Але це надзвичайно висока роздільна здатність і зазвичай не те, що ви шукаєте.

git log

Давайте чесно: ці логи не вражають. Вони нудні. І тут повно інформації, яка вам зараз не дуже потрібна. Ви намагаєтесь зрозуміти усі деталі того, що саме відбувається у вашому проєкті. 

Є кращий спосіб.

Git-лог з більшою видимістю

Використовуючи --graph та --format, ми можемо швидко отримати підсумковий перегляд git-комітів у нашому проєкті:

git log --graph --format=format:'%C(bold blue)%h%C(reset) - %C(bold green)(%ar)%C(reset) %C(white)%an%C(reset)%C(bold yellow)%d%C(reset) %C(dim white)- %s%C(reset)' --all

А ось ці логи вже виглядають гарно! Тут є навіть щось подібне до дерева з гілками. 

Вони показують, хто над чим працював, коли були внесені зміни та як ваші зміни вписуються в загальну картину:

  • --graph додає деревоподібний графік ліворуч. Це не найстильніший графік, але він допомагає візуалізувати зміни в гілках проєкту (приклад).
  • --format дозволяє налаштувати формат ваших логів. Ви можете обрати з уже готових форматів або написати власний, як у цьому прикладі.
  • --all містить всі посилання, теги та гілки в логах (включно з віддаленими гілками). Можливо, вам це не потрібно, тому можна налаштувати, як зручніше (приклад).

Ось тут можна переглянути інформацію, як ви можете покращувати свої git-логи.

Розуміння конкретного коміту

Часто вам потрібно розуміти, що відбувається з конкретним комітом. git show може показати вам високорівневий звіт змін у коміті, але з його допомогою можна побачити зміни і у конкретних файлах.

Перегляд підсумків коміту

git show <commit> --stat

Використовуючи прапорець --stat, ви побачите підсумок коміту разом із зміненими файлами та детальною інформацією про те, як вони змінилися.

Перегляд певних змін файлів для коміту

Якщо ви хочете передивитись зміни конкретних рядків у певному файлі, використовуйте git show зі шляхом до файлу:

git show <commit> -- <filepath>

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

Перегляньте документацію git-show, щоб дізнатися, як краще розуміти git commit.

Внесення змін

Ви створили гілку в проєкті, внесли деякі зміни у свою гілку, і готові знову об’єднати ці зміни в основну. Але інший розробник вніс зміни до тих самих файлів.

Якщо ви використовуєте такий сервіс, як GitHub — вас буде повідомлено, чи не виник конфлікт злиття:

Git запропонує вам розв’язати ці конфлікти злиття перед тим, як ви додасте свої зміни в main. Це дозволить зберегти ту частину роботи, яку виконали інші розробники. 

Щоб вирішити проблему, ви зазвичай обираєте один із двох шляхів: merge чи rebase.

git merge чи git rebase

Якщо у головній гілці є зміни, які ви хочете додати до своєї гілки, ви можете або об’єднати зміни, або перебазувати свою гілку з іншої точки.

merge бере зміни з однієї гілки та об’єднує їх з іншою в одному коміті злиття.

git merge origin/main your-branch

rebase коригує точку, в якій гілка фактично відгалужується (тобто переміщує гілку до нової початкової точки від базової гілки).

git rebase origin/main your-branch

Як правило, rebase використовують, коли є зміни у верхній гілці (наприклад, main), які хочуть додати у свою гілку. А merge – коли зміни у гілці, яку хочуть повернути в main.

Використовувати squash чи ні

Раніше я був прихильником цього прийому. Але після того, як прочитав статтю Дерека Остіна, змінив свою думку. Рекомендую і вам з нею ознайомитися.  

Автор: Якоб Беннет

Текст адаптувала Євгенія Козловська

Останні статті

CEO Google обіцяє збільшувати штат програмістів, незважаючи на штучний інтелект

Сундар Пічаї, який очолює Google з 2015 року, заявив, що його компанія продовжуватиме збільшувати число…

05.06.2025

«Ринок переповнений пропозиціями з України». Чому українські провайдери здають в оренду власні IPv4-адреси

Українські телекомунікаційні компанії та провайдери масово здають в оренду IPv4-адреси, які свого часу були виділені…

05.06.2025

ChatGPT отримав доступ до хмарних документів та сторонніх дослідницьких інструментів

У ChatGPT додали конектори для підключення до хмарних сервісів, таких як Google Drive, Box, Dropbox,…

05.06.2025

У Запоріжжі затримано 35-річного хакера, який зламав 5000 хостинг-акаунтів для майнінгу криптовалют

Співробітники управління Кіберполіції НПУ в Запорізькій області затримали 35-річного хакера, який зламав 5000 хостинг-акаунтів і…

05.06.2025

Apple відмовляється від розробки на Java, віддаючи перевагу Swift

Внутрішня команда розробників Apple у новому тематичному дослідженні виявила, що «підхід Java до управління пам’яттю…

05.06.2025

Юлія Штукатурова стала новою керівницею європейського регіону в GlobalLogic

Компанія GlobalLogic заявила, що європейський регіон відтепер очолюватиме Юлія Штукатурова, повідомили в DOU. У GlobalLogic Юлія…

04.06.2025