Кожен розробник повинен знати словосполучення Git
Перенесення, гілка, об’ єднання, ребазування, cherry- pick, stash — 30 термінів Git, з якими ви зіткнетеся у щоденному спілкуванні з командою і перегляді коду.
Git має свій власний словник — і знати ці слова не означає лише розуміти команди git. Це розуміння розмов вашої команди: у перегляді запитів на скидання, у стоячих розмовах (« Мені потрібно перебазувати на головну »), у постмортемах (« силовий натиск перезаписав затвердження випуску »).
Ось 30 термінів Git, які найчастіше зустрічаються у справжньому обміні інформацією між командами.
Основні поняття
** Сховище (repo) ** Тека, у якій міститься повна історія вашого проекту. У вас є * локальне * сховище (на вашому комп’ ютері) і * віддалене * сховище (на GitHub, GitLab тощо). Фраза: “Чи можете ви відіслати це до віддаленого сховища?”
Присягнуся Збережений знімок змін. Кожне звітування має унікальний геш SHA, повідомлення, автора і часовий штамп. Фраза: “Я зроблю невеликий запит після кожної логічної зміни, щоб історія була читабельною.”
- Гілка
Паралельна лінія розвитку. Ви створюєте гілки функцій, щоб працювати в ізоляції, не впливаючи на
main. Фраза: “Я працюю над гілкою функцій — ще не злилася.”
** Головний / Головний **
Основна гілка сховища. Сучасні сховища типово мають main; старіші сховища використовують master. Фраза: “The PR targets main — please review before merging.”
ГОЛОВУ Вказівник на будь- який збір, який ви зараз вилучили. Фраза: “HEAD знаходиться на commit a1b2c3d.”
Щоденний робочий процес
** Стадія / Індекс **
Перед затвердженням змін ви * переносите * (або * додаєте *) зміни, які ви бажаєте включити. Область перевірки також називається * індекс *. Фраза: “Я підготував відповідні файли — перегляньте з git diff --cached.”
Тул/Тал
- Push * надсилає ваші локальні зміни до віддаленого сервера. * Pull * отримує зміни з віддалених серверів і об’ єднує їх локально (
fetch+merge). Фраза: “Будь ласка, затягніть перед тим, як натиснути — були зміни в головному.”
Принесите Звантажити зміни з віддаленої гілки без автоматичного об’ єднання їх у вашу робочу гілку. Безпечніше, ніж завантаження, коли ви бажаєте спочатку перевірити зміни. Фраза: “Я отримаю і потім вирішу, чи об’ єднати або перебазувати.”
Клон
Створює повний локальний екземпляр віддаленого сховища. Фраза: “Клонувати сховище, а потім запустити npm install.”
Касса
Перемикає до іншої гілки або перенесення. Фраза: “Звантажити гілки feature/auth для перевірки нового потоку входу.”
Розгалуження та злиття
Об’єднання Об’ єднує історію однієї гілки з іншою, створюючи * злиття звітів *, яке записує місце, де обидві історії з’ єдналися. Фраза: “Ми злиємо гілочку функцій після перегляду коду.”
** Перезапис ** Відтворює ваші звітування над останнім звітуванням іншої гілки, створюючи лінійну історію. Фраза: “Перебазувати на main перед відкриттям PR — у вас є конфлікт з останніми змінами.”
** Перенесення вперед ** Об’ єднання, для якого не потрібне зведення з’ єднання — вказівник гілки призначення просто пересувається вперед вздовж зведень гілки джерела. Фраза: “Це було чисте об’єднання швидким рухом вперед — без конфліктів.”
** Конфлікт / Конфлікт об’ єднання **
Коли Git не може автоматично об’ єднати два набори змін до одного рядка. Ви розв’ язуєте конфлікти вручну. Фраза: “Я отримав конфлікт в package-lock.json — я розв’яжу його і відштовхну.”
Сквош Об’ єднує декілька звітів у один. Часто це робиться перед об’ єднанням гілки функціональності, щоб утримувати історію чистою. Фраза: “Будь ласка, знищіть свої затвердження — мені не потрібно бачити п’ять повідомлень ‘WIP’.”
Просунуті операції
Стэш Тимчасово зберігає незбережені зміни, щоб ви могли перемикатися між гілками без зберігання. Фраза: “Я схоплю свою поточну роботу і перевірю їх гілку, щоб відтворити проблему.”
Вишневий Застосувати певне збереження з однієї гілки до іншої, без об’ єднання всієї гілки. Фраза: “Відзначте затвердження поправки на гілки випуску.”
Відновлення Створює нове перенесення, яке скасує зміни попереднього перенесення — безпечне, оскільки не перезаписує історію. Фраза: “Ми повернули затвердження розгортання — це скасує зміну, що призвела до пошкодження, не втрачаючи історію git.”
Сброс
Пересуває вказівник гілки до іншого звітування, за бажанням, очищаючи зону очікування або робочий каталог. Використовуйте з обережністю — --hard відкидає неперевірену роботу. Фраза: “Я зробив жорсткий скидання, щоб повернутися до чистого стану.”
Дворядний
Використовує двійковий пошук для пошуку звітування, яке викликало ваду. Фраза: “Я використав git bisect, щоб звузити його до затвердження від минулого вівторка.”
Запити і співробітництво
** Запит на витягнення (PR) / Запит на об’ єднання (MR) ** Пропозиція щодо об’ єднання однієї гілки з іншою, використовується для перегляду коду. GitHub використовує «Pull Request»; GitLab використовує «Merge Request». Фраза: “Я відкрив PR — запит на перегляд від @alice і @bob.”
** Перегляд / Схвалення / Запит на зміни ** Дії, які переглядач виконує у зв’ язку з PR: * затвердити * (готовий до об’ єднання), * запитати зміни * (треба виправити перед об’ єднанням), * коментувати * (зворотній зв’ язок, не блокування). Фраза: “PR має два схвалення, але один запит на зміни — зверніться до відгуку першим.”
-
Вілка Особиста копія чиєїсь іншої копії, використовується у потоках роботи з відкритим кодом. Фраза: “Розділіть репозиторій, зробіть свої зміни, а потім відкрийте PR проти оригіналу.”
-
Так Назване посилання на певне зобов’ язання, зазвичай використовується для випусків. Фраза: “Ми тегуємо кожен реліз з семантичної версії — наприклад,
v2.3.0.”
** CI / Перевірки ** Автоматичні тести і лінтинг, що виконуються проти кожного PR. Фраза: “Перевірки CI не спрацьовують на вашій гілці — будь ласка, виправте це перед тим, як ми злиємо.”
Ідеї та стратегії
** Git Flow **
Стратегия розгалуження з використанням гілок main, develop, feature/*, release/*, і hotfix/*. Часто в більших командах. Фраза: “Ми дотримуємося Git Flow — поправки прямують безпосередньо до головного релізу і зливаються назад для розробки.”
** Розробка на основі ствола **
Стратегія, де кожен часто робить commit до main (тунелю), з прапорцями можливостей для незавершених можливостей. Часто в швидкісних командах. Фраза: “Ми робимо розробку на основі ствола — немає довготривалих гілок функцій.”
** Семантичний контроль версій (semver) **
Схема нумерації: MAJOR.MINOR.PATCH. Зміни в польоті ведуть до збільшення маси. Нові функції → Minor. Виправлення помилок → Patch. Фраза: “Це зміна API, яка порушує правила — нам потрібно переробити основну версію.”
Ці 30 термінів допоможуть вам у 95% розмов Git у будь- якій команді. Наступний крок: практикуйте їх використання в контексті з нашим Вправи зі словником Git.
На практиці: Навігація нюансів для не-народжені мовці
Будьмо чесними – навіть досвідчені розробники іноді натякають на термінологію Git. Але для тих, чия перша мова не є англійською, тонкощі фразування навколо контролю версій можуть бути особливо викликом. Це не просто знати, * що * команда робить; це розуміння * як * ефективно спілкуватися про це, особливо при співпраці з міжнародними командами. Простий «фікс» може сприйматися дуже по-різному, залежно від того, як він оформлений. Розглянемо цей сценарій: Сара переглядає запит на звантаження, надісланий Давидом з Німеччини. Девід реалізував нову функцію для обробки автентифікації користувача, але включив до коду деякі коментарі, які написані досить прямо: « Цей розділ має бути більш зрозумілим ». Сара, яка вивчає англійську як другу мову, може розглядати це як критику * її * роботи, навіть якщо це має бути конструктивний відгук.
Ключова відмінність часто полягає в прямоті спілкування. У багатьох культурах, особливо тих, що знаходяться під впливом східноазіатських або німецьких традицій, виражаючи незгоду безпосередньо, можна вважати неввічливим. Тому використання м’якшої, більш описової мови є критичним при наданні зворотнього зв’язку. Замість того, щоб сказати « Це потрібно виправити », краще було б сказати: « Чи можемо ми розглянути альтернативні параметри форматування для цього розділу, щоб поліпшити його читабельність і підтримувати послідовність з загальним посібником зі стилів проекту? » Аналогічно, коли ви описуєте мету повідомлення про перенесення, уникайте простого вказування на те, що ви зробили. Поясніть * чому * ви внесли ці зміни — « Перероблена логіка розпізнавання, щоб дотримуватися найкращих практик безпеки, як це описано у документації команди » набагато більш інформаційний, ніж « Виправлена розпізнавання. »
Інша поширена область плутанини виникає з концепції «вгору» проти «локального». Зрозуміти цю відмінність при спілкуванні про злиття або перенесення може уникнути значних головних болів. Якщо ви просите когось « затягнути з початкового сховища », переконайтеся, що він розуміє, що ви просите його оновити свою локальну гілку останніми змінами з головного сховища, а не просто попросити його замінити всю свою робочу копію на нову. Чиста комунікація є найважливішою під час розв’ язання конфліктів або координації потоку роботи у багатьох гілках.
Нарешті, пам’ ятайте, що сама термінологія Git може бути складною і трохи відрізнятися у використанні залежно від звичаїв команди. Не вагайтеся запитати про пояснення - завжди краще помилятися на стороні запитання, ніж робити припущення, засновані на вашому розумінні. Метою є не тільки технічна майстерність, але також чітке і респектабельне спілкування в процесі розробки.
git checkout main # Example: Fetching the latest updates from the remote repository.