Git Guide
Рекомендується встановити Relivator, дотримуючись детальних інструкцій в README.md, щоб відчувати себе більш впевнено на початку вивчення Git’у.
Це правда - Git спочатку може бути складним. Подумайте про використання таких ресурсів, як цей посібник, Git Book та GitHub Skills, щоб поглибити своє розуміння. Команда git commit —help спрямує вас до інформації про команду git commit
та її опції, тому ця команда довідки також може бути корисною. Найкращий спосіб освоїтися з Git’ом - це регулярно ним користуватися. Створіть невеликий проект або скористайтеся великим шаблоном веб-проекту, таким як Relivator, і поекспериментуйте з різними командами. Якщо ви не впевнені в чомусь, пов’язаному з Git’ом, зверніться до цього детального керівництва, щоб дізнатися більше.
Початкове налаштування Git’у
*Дотримуючись вказівок у цьому посібнику, ви зможете почати працювати з Git’ом, налаштувати своє середовище та використовувати зручні псевдоніми для оптимізації робочого процесу. Щасливого гітингу!
Основні інструменти
Переконайтеся, що у вас встановлено Git. Також рекомендується встановити Node.js LTS (Windows/macOS | Linux). Потім запустіть corepack enable pnpm, щоб встановити pnpm. Додатково ми рекомендуємо встановити VSCode та GitHub Desktop (Windows/macOS | Linux). Якщо ви користувач Windows, також встановіть PowerShell 7.4+.
Налаштування ідентичності
Перш ніж ви почнете створювати будь-які комміти в Git’і, вам потрібно встановити свою ідентичність. Це важливо, тому що ваше ім’я та email будуть додані до кожного створеного вами коміту. Оскільки ця інформація є публічною, використовуйте щось прийнятне.
Перевірка налаштувань
Щоб побачити всі налаштування Git’а і переконатися, що вони правильні, запустіть його:
Посилання в Git’і
Написання хороших коммітів є цінною навичкою. Щоб дізнатися, як писати ефективні повідомлення про комміти, зверніться до наступних ресурсів:
- Покращення вашого Git-балки за допомогою звичайних коммітів
- Повідомлення про карму коммітів
- Семантичні повідомлення про фіксацію
- Зауваження про повідомлення про комміти в Git’і
- Написання повідомлень про комміти Git’а
Псевдоніми
Псевдоніми Git’а - це скорочення для довгих команд. Вони можуть заощадити вам багато тексту і зробити ваш робочий процес більш ефективним.
Отримання оновлень
Цей псевдонім оновлює ваш локальний репозиторій, витягуючи останні зміни, перезавантажуючи та оновлюючи підмодулі.
Надсилання оновлень
Цей псевдонім переміщує ваші зміни до віддаленого сховища, включно з тегами.
Скасування постановки одного або декількох файлів
Іноді ви помилково розбиваєте файли на етапи. Цей псевдонім допоможе вам вилучити їх зі стадії.
Тегування релізів відповідно до семантичної версійності (SemVer)
Семантичне керування версіями - це спосіб позначати ваші випуски змістовними номерами версій. Ці псевдоніми допомагають автоматизувати процес.
Ігнорування надлишкових бінарних імен git
у командах
Ви можете не вводити git git
, встановивши псевдонім:
Відображення журналу змін з часу останнього тегу
Щоб переглянути журнал змін від останньої мітки до поточної фіксації, використовуйте цей псевдонім:
Виявлення залишків і відходів від забудови
Знайдіть у своєму коді загальні маркери залишків, такі як TODO або налагоджувальні відбитки:
Рекомендація
Використання вашого улюбленого редактора для Git’а
Ви можете налаштувати ваш улюблений текстовий редактор для використання з Git’ом для написання повідомлень про комміти тощо. Наприклад, якщо ви віддаєте перевагу gedit
на Ubun tu:
Коректна обробка закінчень рядків у Windows
Windows та Unix-системи (наприклад, Linux та macOS) по-різному обробляють закінчення рядків. Щоб уникнути проблем, налаштуйте Git’у так, щоб він автоматично обробляв їх за вас. Це перетворить закінчення рядків у власний формат Windows (CRLF) при оформленні замовлення і назад у формат Unix (LF), коли ви збережете зміни.
Запам’ятовування (кешування) паролів для HTTPS
Коли ви клонуєте сховища по HTTPS, вам потрібно щоразу вводити ім’я користувача і пароль, на відміну від SSH-ключів. Щоб змусити Git’а запам’ятовувати ваші паролі і полегшити собі життя, використовуйте наведені нижче команди відповідно до вашої операційної системи:
Використання
Оновлення розгалуженого репозиторію (синхронізація з оригіналом)
-
Додайте оригінальне сховище як віддалене (зробіть це лише один раз):.
-
Отримайте оновлення з оригінального репозиторію та перенесіть їх до вашого форку:.
Скидання сховища до стану розгалуженого сховища
-
Додайте оригінальне сховище як віддалене (зробіть це лише один раз):.
-
Скиньте стан вашого сховища:.
Показати всі проігноровані файли для сховища
Перерахувати всі ігноровані файли:
Отримати список усіх віддалених команд для сховища
Щоб переглянути всі віддалені сховища, пов’язані з вашим локальним сховищем:
Видалити всі нещодавно проігноровані файли
Коли ви додали до .gitignore
файл, який раніше був у сховищі, видаліть його зі сховища:
Зміна URL-адреси віддаленого доступу до сховища
Щоб змінити віддалену URL-адресу:
Відкинути непоставлені зміни
Відкинути всі непоставлені зміни:
Відкинути зміни для певного файлу або шляху:
Скасування вже опублікованого коміту
Безпечний метод:
Небезпечний метод:.
Скасування локальної фіксації (ще не опублікована)
Зберегти зміни у вашій робочій копії:
Зовсім відмовитися від змін:
Показати зміни, внесені до робочої копії
Показувати тільки неінсценовані зміни:
Показувати лише поетапні зміни:
Показати як неінсценовані, так і інсценовані зміни:
Видалити гілку
Щоб видалити гілку локально:
Видалення гілки на пульті:
Додавання опису до коміту
Додавання повідомлення про фіксацію з заголовком та описом:
Видалити всі невідстежувані файли та каталоги
Попередній перегляд того, що буде видалено:
Щоб дійсно видалити файли:
Показати журнал у короткій версії
Відображати журнал фіксації у стислому форматі:
Створити гілку
Створити нову гілку, але залишитися в поточній гілці:
Створити та перейти до нової гілки:
Перехід до іншої гілки
Перейти до іншої гілки:
Тегування випусків
Ви можете позначити певні моменти в історії вашого сховища, додавши мітки. Мітки зазвичай використовуються для релізів, але можуть застосовуватися і для інших цілей.
Щоб позначити поточний комміт, скористайтеся наступними командами. Замініть <TAG_NAME>
на унікальну назву тегу (наприклад, v1.0.4
для версій) і <DESCRIPTION>
на опис змін (необов’язково).
Імпорт комітів, запитів на витягування та інших змін через файли виправлень
-
Отримайте файл виправлення для коміту, pull-запиту або зміни, яку ви хочете імпортувати. Для pull-запитів GitHub ви можете отримати файл виправлення, додавши
.patch
до URL-адреси pull-запиту: -
Застосуйте файл виправлення за допомогою
git apply
: -
За бажанням, внесіть додаткові зміни до імпортованого коду.
-
Зафіксуйте зміни, вказавши автора оригінального патчу:
Копіювання гілки
Створити локальну копію старої гілки під новим ім’ям і перенести її на віддалений сервер:
Переміщення філії
Перейменування гілки локально та віддалено:
Очищення гілки та скидання її до порожнього стану
Створити нову гілку без історії і почати з чистого аркуша:
Підрахунок коммітів на гілці
Підрахунок загальної кількості коммітів на гілці:
Підрахунок коммітів на автора:
Скасування змін
Скасування скидання Git’а
Якщо ви помилково запустили git reset --hard HEAD^
і втратили комміти, скористайтеся git reflog
, щоб знайти комміт і скинутись до нього:
Скасувати останню фіксацію
Скасувати останню фіксацію, але зберегти зміни у робочому каталозі:
Визначення розміру теки
Щоб знайти розмір папки:
Очищення історії Git’а
Щоб видалити файли з історії, використовуйте git filter-branch
:
Або використовуйте bfg
:
-
Встановіть
bfg
: -
Запустіть
bfg
, щоб очистити історію комітів: -
Видалити файли:
Щоб замінити текст, створіть файл passwords.txt
з наступним форматом:
Сквош-фікс
Об’єднати кілька коммітів в один:
Відмінити зміни
Відкинути всі зміни:
Видалити node_modules
, якщо випадково зареєстровано
Внести зміни до ваших повідомлень про зобов’язання
Щоб змінити повідомлення про останню фіксацію:
Збираю вишні
Застосування коміту з іншої гілки як нового коміту:
Управління філіями
Перейменувати філію
Щоб перейменувати гілку, ви можете скористатися наступними командами:
Скидання гілки локального сховища для відповідності віддаленому
Щоб скинути локальну гілку, щоб вона відповідала “головній” гілці віддаленого сховища:
Видалити всі об’єднані віддалені гілки
Видалити всі віддалені гілки, які вже були об’єднані:
Скидання до початкових налаштувань
Щоб скинути локальну гілку, щоб вона відповідала віддаленій:
Натисніть Q
, щоб вийти з журналу.
Отримати хеш з останньої фіксації
Щоб отримати повний хеш останнього коміту:
Отримати скорочений хеш:
Зберігати хеш у змінній:
Тегування для керування версіями Docker
Позначте сховище і виконайте фіксацію:
Ярлики Git’а
Налаштуйте псевдоніми, щоб спростити типові команди Git’а:
Отримання імені та власника репозиторію GitHub
Отримати URL-адресу та ім’я сховища:
Видалити гілку локально
Щоб видалити гілку локально:
Очистити локальні видалені гілки та отримати всі інші гілки
Видалити всі локальні гілки, окрім поточної
Сортування гілок за датою останньої фіксації
Перелік гілок, відсортованих за датою останнього коміту:
Управління зобов’язаннями
Git-повідомлення про фіксацію
- подвиг: Нова функція, видима для кінцевих користувачів.
- виправлення: Виправлення помилки, видиме кінцевим користувачам.
- рутина: Зміни, які не впливають на кінцевих користувачів (наприклад, зміни в конвеєрі CI).
- docs: Зміни в документації.
- refactor: Зміни у виробничому коді, що стосуються читабельності, стилю або продуктивності.
Список філій, які було об’єднано
Список філій, які не були об’єднані
Очищення та оптимізація репозиторію
Видалення непотрібних файлів та оптимізація локального сховища:
Автоматично надсилати коміти з тегами
Відновлення файлу до заданого коміту
Відновлення певного файлу до його стану на момент фіксації:
Корисні команди та техніки Git’у
Завантажити лише папку з GitHub за допомогою Subversion (SVN)
Щоб завантажити певну папку з репозиторію GitHub за допомогою SVN:
Створення псевдоніма для завантаження шаблонів docker-compose
:
Попередньо зафіксовані хуки
Переконайтеся, що у поточній гілці відредаговано журнал змін. Для цього використовуйте гачок попередньої фіксації:
Git Rebase Favor Current Branch
Надавати перевагу поточній гілці під час перезавантаження:
Більше інформації про стратегії злиття для rebase
Git-хук після оформлення замовлення
Щоб автоматизувати завдання після перевірки гілки, використовуйте хук пост-перевірки:
-
Створіть і встановіть дозволи для хука:
-
Додайте наступний скрипт до
.git/hooks/post-checkout
:
Git-перевірка одного файлу з головного коміту
Повернути файл до стану в головній гілці:
Додавання нових змін до останнього коміту
Доповнити останній комміт новими змінами:
Очищення PR філії
Якщо у вашій гілці безлад і ви хочете почистити коміти:
-
Створіть нову тимчасову гілку:
-
Створіть патч-файл змін:
-
Застосуйте патч до тимчасової гілки:
-
Очистіть і перебазуйте за потреби, а потім видаліть стару гілку:
-
Перейменуйте тимчасову гілку на оригінальну назву:
-
З силою проштовхніть очищену гілку:
Краще штовхни з більшою силою
Використовуйте git push --force-with-lease
замість git push --force
для безпечнішого примусового оновлення.
Дізнатися більше про force-with-lease
Git Fixup
Виправити попередній комміт:
-
Створіть фіксований коміт:
-
Rebase для витіснення фіксованого коміту:
Ресурси
- Шаблон Relivator Next.js
- Theo’s Post
- Блог Мартіна Хайнца
- Delight-IM’s Git Knowledge
- Alex Tan Hong Pin’s Cheat Sheet
Підсумок
Цей посібник охоплює різноманітні корисні команди та техніки Git’у, натхненні різними ресурсами та створені Reliverse, щоб полегшити як початківцям, так і досвідченим користувачам керування та оптимізацію своїх репозиторіїв.