Розробник Якоб Беннет у своєму блозі на Medium пише, що Git — це потужний інструмент, яким приємно користуватися, якщо ви розумієте, як саме це робити.
Він роками використовував Git у різних командах та проєктах. Хоча щодо деяких робочих процесів у Якоба непевна думка (наприклад, щодо squash
), він все одно вважає цей інструмент дуже потужним та гнучким. Передаємо йому слово.
Git-логи не дуже зручні для роботи «з коробки».
Використання git log
дає вам певну інформацію. Але це надзвичайно висока роздільна здатність і зазвичай не те, що ви шукаєте.
git log
Давайте чесно: ці логи не вражають. Вони нудні. І тут повно інформації, яка вам зараз не дуже потрібна. Ви намагаєтесь зрозуміти усі деталі того, що саме відбувається у вашому проєкті.
Є кращий спосіб.
Використовуючи --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
.
Якщо у головній гілці є зміни, які ви хочете додати до своєї гілки, ви можете або об’єднати зміни, або перебазувати свою гілку з іншої точки.
merge
бере зміни з однієї гілки та об’єднує їх з іншою в одному коміті злиття.
git merge origin/main your-branch
rebase
коригує точку, в якій гілка фактично відгалужується (тобто переміщує гілку до нової початкової точки від базової гілки).
git rebase origin/main your-branch
Як правило, rebase
використовують, коли є зміни у верхній гілці (наприклад, main
), які хочуть додати у свою гілку. А merge
– коли зміни у гілці, яку хочуть повернути в main
.
Раніше я був прихильником цього прийому. Але після того, як прочитав статтю Дерека Остіна, змінив свою думку. Рекомендую і вам з нею ознайомитися.
Автор: Якоб Беннет
Текст адаптувала Євгенія Козловська
Сундар Пічаї, який очолює Google з 2015 року, заявив, що його компанія продовжуватиме збільшувати число…
Українські телекомунікаційні компанії та провайдери масово здають в оренду IPv4-адреси, які свого часу були виділені…
У ChatGPT додали конектори для підключення до хмарних сервісів, таких як Google Drive, Box, Dropbox,…
Співробітники управління Кіберполіції НПУ в Запорізькій області затримали 35-річного хакера, який зламав 5000 хостинг-акаунтів і…
Внутрішня команда розробників Apple у новому тематичному дослідженні виявила, що «підхід Java до управління пам’яттю…
Компанія GlobalLogic заявила, що європейський регіон відтепер очолюватиме Юлія Штукатурова, повідомили в DOU. У GlobalLogic Юлія…