Categories Взаємодія в роботі

30 команд Git, необхідні освоєння інтерфейсу командного рядка Git

Git – найпопулярніша у світі розподілена система контролю версій. Лінус Торвальдс, розробник ядра ОС Linux, створив цей інструмент ще у 2005 році, а сьогодні Git активно підтримується як проект із відкритим вихідним кодом. Величезна кількість відкритих та комерційних проектів використовують Git для контролю версій.

У цій статті перераховуються основні команди, які слід знати розробнику, щоб освоїти управління репозиторіями GitHub на високому рівні. Ознайомитись з ними буде корисно як новачкам, так і досвідченим розробникам.

30 основних команд, які зроблять із вас майстри Git

  1. Як вказати ім'я користувача та адресу електронної пошти
  2. Кешування облікових даних
  3. Ініціалізація репозиторію
  4. Додавання окремих файлів або всіх файлів до області підготовлених файлів
  5. Перевірка статусу репозиторію
  6. Внесення змін до однорядкового повідомлення або через редактор
  7. Перегляд історії комітів із змінами
  8. Перегляд заданого комміту
  9. Перегляд змін до комиту
  10. Видалення файлів, що відстежуються, з поточного робочого дерева
  11. Перейменування файлів
  12. Скасування підготовлених та непідготовлених змін
  13. Зміна останнього комміту
  14. Відкат останнього комміту
  15. Відкат заданого комміту
  16. Створення нової гілки та перехід у неї
  17. Перегляд списку гілок
  18. Видалення гілки
  19. Злиття двох гілок
  20. Відображення журналу фіксації у вигляді графіка для поточної або всіх гілок
  21. Припинення злиття під час конфлікту
  22. Додавання віддаленого репозиторію
  23. Перегляд віддалених URL-адрес
  24. Отримання додаткових відомостей про віддалений репозиторій
  25. Надсилання змін у віддалений репозиторій
  26. Отримання змін із віддаленого репозиторію
  27. Злиття віддаленого репозиторію з локальним
  28. Відправлення нової гілки у віддалений репозиторій
  29. Видалення видаленої гілки
  30. Використання перебазування

1. Як задати ім'я користувача та адресу електронної пошти

Ім'я користувача потрібно, щоб прив'язувати коміти до вашого імені. Це не те саме, що ім'я користувача облікового запису GitHub, за допомогою якого виконується вхід у профіль GitHub. Задати або змінити ім'я користувача можна за допомогою команди git config. Нове ім'я автоматично відображатиметься у наступних комітах, відправлених на GitHub через командний рядок. Якщо хочете приховати своє реальне ім'я, можна використовувати ім'я користувача Git довільний набір символів.

git config --global user.name "Tara Routray"

Крім того, командою git config можна змінювати адресу електронної пошти, прив'язану до ваших комітів Git. Нова адреса електронної пошти автоматично відображатиметься у всіх подальших комітах, поданих на GitHub через командний рядок.

git config --global user.email "[email protected]"

2. Кешування облікових даних

Кешувати облікові дані можна за допомогою параметра config з прапором –global. Так ви позбавитеся необхідності вручну вводити ім'я користувача та пароль при створенні нового комміту.

git config --global credential.helper cache

3. Ініціалізація репозиторію

Створити порожній репозиторій Git або знову ініціалізувати існуючий можна параметром init. При ініціалізації він створить приховану папку. В ній містяться всі об'єкти та посилання, які Git використовує та створює в історії роботи над проектом.

4. Додавання окремих файлів або всіх файлів до області підготовлених файлів

Додати окремий файл до області підготовлених файлів можна параметром add із зазначенням імені файлу. Просто замініть somefile.js на актуальне ім'я.

git add somefile.js

Крім того, можна додати всі файли та папки до цієї області, надавши wildcard . замість імені файлу:

5. Перевірка статусу репозиторію

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

6. Внесення змін до однорядкового повідомлення або через редактор

При створенні комміта в репозиторії можна додати однорядкове повідомлення за допомогою параметра commit з прапором -m. Саме повідомлення вводиться безпосередньо після прапора, у лапках.

git commit -m "Your short summary o the commit"

Також можна відкрити текстовий редактор у терміналі для написання повного повідомлення комміту. Воно може складатися з кількох рядків тексту, в якому детально характеризуються зміни, внесені до репозиторію.

7. Перегляд історії коммітів із змінами

Переглядати зміни, внесені до репозиторію, можна за допомогою параметра log . Він відображає список останніх коммітів у порядку виконання. Крім того, додавши прапорець -p , ви можете детально вивчити зміни, внесені до кожного файлу.

8. Перегляд заданого комміту

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

git show 1af17e73721dbe0c40011b82ed4bb1a7dbe3ce29

Також можна використовувати скорочений хеш.

9. Перегляд змін до комміту

Можна переглянути список змін, внесених до репозиторію, використовуючи параметр diff . За замовчуванням відображаються лише зміни, які не підготовлені для фіксації.

Для перегляду підготовлених змін необхідно додати прапорець –staged.

Також можна вказати ім'я файлу як параметр і переглянути зміни, внесені лише до файлу.

git diff somefile.js

10. Видалення файлів, що відстежуються, з поточного робочого дерева

Видаляти файли з поточного робочого дерева можна за допомогою параметра rm. При цьому файли видаляються з індексу.

git rm dirname/somefile.js

Можна також використовувати маски файлів (наприклад, *.js) для видалення всіх файлів, які відповідають критерію.

git rm dirname/*.html

11. Перейменування файлів

Перейменувати файл або папку можна mv . Він вказується джерело source і призначення destination . Джерело – реально існуючий файл або папка, а призначення – існуюча папка.

git mv dir1/somefile.js dir2

При виконанні команди файл або папка, вказані як джерело, будуть переміщені до призначення. Індекс буде оновлено відповідно, але зміни потрібно записати.

12. Скасування підготовлених та непідготовлених змін

Відновити файли робочого дерева, які не підготовлені до комміту, можна параметром checkout . Для операції потрібно вказати шлях до файлу. Якщо шлях не вказано, параметр git checkout змінить вказівник HEAD, щоб задати вказану гілку як поточну.

git checkout somefile.js

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

git reset HEAD somefile.js

Якщо потрібно виконати це для всіх підготовлених файлів, шлях до них вказувати не треба.

13. Зміна останнього комміту

Внести зміни в останній коміт можна параметром commit із прапором –amend. Наприклад, ви записали зміни, внесені до ряду файлів, і зрозуміли, що припустилися помилки в повідомленні комміту. У цьому випадку можна скористатися вказаною командою, щоб відредагувати повідомлення попереднього комміту, не змінюючи його знімок.

git commit --amend -m "Updated message for the previous commit"

Також можна вносити зміни до файлів, надісланих раніше. Наприклад, ви змінили кілька файлів у рядку папок і хочете їх записати як єдиний знімок, але забули додати до комміту одну з папок. Щоб виправити таку помилку, достатньо підготувати для фіксації решту файлів і папок і створити коміт з прапорами –amend і –no-edit .

git add dir1 git commit # Тут ви хочете add dir2 to commit, ви можете виконати following command to amend thether files and folders. git add dir2 git commit --amend --no-edit

Прапор –no-edit дозволить внести до комміту поправку без зміни повідомлення комміта. У цьому випадку підсумковий коміт замінить неповний, а виглядатиме це так, ніби ми відправили зміни до всіх файлів у потрібних папках як єдиний знімок.

Увага! Не змінюйте публічні коміти.

За допомогою amend чудово виправляються локальні комміти, а виправлення можна передати до загального репозиторію. Однак змінювати коміти, які вже доступні іншим користувачам, не слід.Пам'ятайте, що змінені комміти є абсолютно новими, а попередній комміт вже не буде доступним у поточній гілці. Наслідки будуть такими ж, як і при скасуванні змін публічного знімка.

14. Відкат останнього комміту

Відкотити останній коміт можна за допомогою параметра revert. Створиться новий коміт, який містить зворотні перетворення щодо попереднього, і додасться до історії поточної гілки.

▍ Різниця між revert та reset

Команда git revert скасовує зміни, записані лише одним коммітом. Вона не відкочує проект до більш раннього стану, видаляючи всі наступні комміти, як це робить команда git reset.

У команди revert є дві великі переваги, порівняно з reset. По-перше, вона не змінює історію проекту та здійснює операцію, безпечну для коммітів. По-друге, її об'єктом виступає конкретний комміт, створений будь-якої миті історії, а git reset завжди бере за точку відліку поточний комміт. Наприклад, якщо потрібно скасувати старий коміт за допомогою git reset, доведеться видалити всі коміти, подані після цільового, а потім виконати їх повторно. Отже, команда git revert — набагато зручніший і безпечніший спосіб скасування змін.

15. Відкат заданого комміту

Відкотити проект до заданого комміту можна за допомогою параметра revert та ідентифікатора комміту. Створиться новий коміт – копія комміту з наданим ідентифікатором – і додасться до історії поточної гілки.

16. Створення нової гілки та перехід до неї

Створити нову гілку можна за допомогою параметра branch, вказавши ім'я гілки.

git branch new_branch_name

Але Git не перемикається на неї автоматично. Для автоматичного переходу потрібно додати прапорець -b і параметр checkout.

git checkout -b new_branch_name

17.Перегляд списку гілок

Можна переглянути повний список гілок, використовуючи параметр branch . Команда відобразить усі гілки, позначить поточну зірочкою (*) та виділить її кольором.

Також можна вивести список віддалених гілок за допомогою прапора -a.

18. Видалення гілки

Видалити гілку можна параметром branch з додаванням прапора -d та вказівкою імені гілки. Якщо ви завершили роботу над гілкою і об'єднали її з основною, її можна видалити без втрати історії. Однак, якщо виконати команду видалення до злиття, з'явиться повідомлення про помилку. Цей захисний механізм запобігає втраті доступу до файлів.

git branch -d existing_branch_name

Для примусового видалення гілки використовується прапор -D із великою літерою. У цьому випадку гілка буде видалена незалежно від поточного статусу без попереджень.

git branch -D existing_branch_name

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

git push origin --delete existing_branch_name

19. Злиття двох гілок

Об'єднати дві гілки можна параметром merge із зазначенням імені гілки. Команда об'єднає вказану гілку з основною.

git merge existing_branch_name

Якщо потрібно виконати коміт злиття, виконайте команду git merge із прапором –no-ff .

git merge --no-ff existing_branch_name

Вказана команда об'єднає задану гілку з основною і зробить коміт злиття. Це необхідно для фіксації всіх злиттів у вашому репозиторії.

20. Відображення журналу фіксації у вигляді графіка для поточної або всіх гілок

Переглянути історію коммітів у вигляді графіка для поточної гілки можна за допомогою параметра log та прапорів –graph –oneline –decorate. Опція –graph виведе графік у форматі ASCII, який відображатиме структуру розгалуження історії коммітів. У зв'язці з прапорами –oneline і –decorate , цей прапор спрощує розуміння того, до якої галузі належить кожен коміт.

git log --graph --oneline --decorate

Для перегляду історії коммітів з усіх гілок використовується прапор –all.

git log --all --graph --oneline --decorate

21. Припинення злиття під час конфлікту

Перервати злиття у разі конфлікту можна параметром merge із прапором –abort. Він дозволяє зупинити процес злиття та повернути стан, з якого цей процес було розпочато.

Також при конфлікті злиття можна використовувати параметр reset для відновлення конфліктуючих файлів до стабільного стану.

22. Додавання віддаленого репозиторію

Додати дистанційний репозиторій можна параметром remote add , вказавши shortname і url необхідного репозиторію.

git remote add awesomeapp https://github.com/someurl..

23. Перегляд віддалених URL-адрес

Переглядати видалені URL-адреси можна параметром remote із прапором -v . Цей параметр відображає віддалені з'єднання з іншими репозиторіями.

Така команда відкриває доступ до інтерфейсу керування віддаленими записами, які зберігаються у файлі .git/config репозиторію.

24. Отримання додаткових відомостей про віддалений репозиторій

Отримати докладні відомості про віддалений репозиторій можна за допомогою параметра remote show із зазначенням імені репозиторію – наприклад, origin .

git remote show origin

Ця команда відображає список гілок, пов'язаних з віддаленим репозиторієм, а також робочих станцій, підключених для отримання та надсилання файлів.

25. Відправлення змін до віддаленого репозиторію

Відправляти зміни до віддаленого репозиторію можна параметром push із зазначенням імені репозиторію та гілки.

git push origin main

Ця команда передає локальні зміни до центрального репозиторію, де з ними можуть ознайомитися інші учасники проекту.

26. Отримання змін із віддаленого репозиторію

Для завантаження змін із віддаленого репозиторію використовується параметр pull. Він завантажує копію поточної гілки із зазначеного віддаленого репозиторію та поєднує її з локальною копією.

Також можна переглянути докладну інформацію про завантажені файли за допомогою прапора –verbose.

27. Злиття віддаленого репозиторію з локальним

Злиття видаленого репозиторію з локальним виконується параметром merge із зазначенням імені видаленого репозиторію.

28. Відправлення нової гілки у віддалений репозиторій

Передати нову гілку у віддалений репозиторій можна параметром push із прапором -u , вказавши ім'я репозиторію та ім'я гілки.

git push -u origin new_branch

29. Видалення видаленої гілки

Щоб позбутися віддаленої гілки, використовуйте параметр push з прапором –delete , вказавши ім'я віддаленого репозиторію та ім'я гілки.

git push --delete origin existing_branch

30. Використання перебазування

Для доступу до цієї функції використовуйте параметр rebase із зазначенням імені гілки. Перебазування – це процес об'єднання або переміщення послідовності комітів на новий батьківський знімок.

git rebase branch_name

Ця команда змінить основу гілки з одного комміту на інший, якби ви почали гілку з іншого комміту.У Git це досягається за рахунок створення нових коммітів та застосування їх до вказаного базового комміту. Необхідно розуміти, що, хоча гілка і виглядає такою самою, вона складається з нових комітів.

▍ Дякуємо за увагу!

Ви дізналися 30 основних команд інтерфейсу командного рядка Git. Тепер, за умови регулярної практики, у вас є все необхідне для досягнення майстерності в управлінні репозиторіями GitHub.

30 команд Git, необхідні освоєння інтерфейсу командного рядка Git - Dosvid.v.ua

Робота з Git через термінал – це обов'язкова частина практики фронтендера. Однак для розробників-початківців цей інструмент може здатися складним. Щоб вам було простіше вчитися, ми зібрали основні команди для роботи з Git.

☝ У деяких командах ми будемо писати URL-адресу віддаленого репозиторію та назву проекту у квадратних дужках, ось так — [посилання на віддалений репозиторій] . Ми робимо це лише для наочності. Вам не потрібно ставити квадратні дужки.

Початкове налаштування Git

Робота з будь-якою програмою завжди починається з її налаштування. Git можна налаштувати один раз і міняти щось тільки за необхідності.

Вказати ім'я користувача – git config –global user.name "Ivan Ivanov". Вказує ім'я користувача, від якого будуть йти комміти. Замість Ivan Ivanov потрібно написати свої дані на латиниці. Якщо ім'я складається з одного слова, лапки можна не ставити.

Вказати електронну пошту – git config –global user.email "[email protected]". Замість [email protected] необхідно вказати вашу пошту. Зверніть увагу, вона повинна збігатися з тією, на яку зареєстрований обліковий запис у Гітхабі.

Переглянути налаштування – git config –list. Параметри можна переглянути і в конфігураційному файлі, але цей спосіб швидший.

Робота з репозиторієм

Створити репозиторій – git init. Ініціалізує порожній репозиторій.

Схиляти віддалений репозиторій – git clone [посилання на віддалений репозиторій] . Проект з'явиться у директорії, де ви знаходились у момент клонування.

Зв'язати віддалений та локальний репозиторії – git remote add origin [посилання на віддалений репозиторій] .

Робота із змінами

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

Підтягнути зміни – git pull. Підтягує до локального репозиторію останню версію проекту. Будьте уважні, виклик цієї команди зітре всі незафіксовані зміни. Іноді після введення цієї команди виникає конфлікт.

Переглянути статус файлів – git status. Ви побачите, які файли змінили, видалили або додали до проекту. При цьому статус «Закоммічений» не відобразиться.

Додати файли до індексу – git add [назва файлу] . Після введення цієї команди, ви можете зробити коміт.

Є схожі команди, наприклад, git add. індексує відразу всі змінені файли та папки в директорії, де ви знаходитесь. Зверніть увагу, між точкою та словом add потрібно ставити пробіл. Команда git add :/ додає до індексу всі файли незалежно від того, в якій директорії ви знаходитесь.

Зробити коміт – git commit -m "Коментар до комміту" – фіксує зміни. До виконання цієї команди локальні зміни нікуди не запишуться.

Потрібно правильно розбивати зміни та давати повні коментарі до коммітів. Докладніше про це читайте у статті «Як оформляти комміти».

Подивитись історію коммітів – git log. Виводить список усіх комітів. Ця команда має різні опції, найпопулярніша з них — –oneline . Вона показує хеш у вкороченому форматі, гілку, в якій зроблено комміт, а також текст комміту. Щоб використовувати цю опцію (як і будь-яку іншу), потрібно додати її після команди: git log-oneline .

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

Робота з гілками

Працюючи з Git, доводиться постійно створювати та переміщатися гілками. А іноді гілки потрібно видаляти чи зливати.

☝ Тут ми для прикладу використовуємо branch-name. Вам при введенні команди потрібно вказати назву вашої гілки.

Створити гілку – git switch –create branch-name. Додає нову гілку під назвою branch-name і автоматично перемикає на неї.

Переключити гілку – git switch branch-name. Ви перейдете на вже створену гілку branch-name.

Для створення та перемикання гілок також можна використовувати git checkout. Ця команда з'явилася раніше, вона має безліч додаткових функцій. Наприклад, вона може відновлювати зміни у коміті. Саме через таку різноманітність завдань розробники вирішили створити окрему команду для перемикання між гілками – git switch. Ви можете використовувати будь-яку з команд, проте git switch доступна лише у версіях від 2.23.

Переглянути всі локальні гілки – git branch.

Перейменувати гілку – git branch -m [старе-назва-гілки] [нова-назва-гілки] – перейменовує гілку. Назви потрібно писати на латиниці.

Надіслати гілку – git push origin [branch-name] – відправляє гілку у віддалений репозиторій.

Видалити гілки – git branch – delete [branch-name]. Команда видаляє гілку [branch-name] у локальному репозиторії. Якщо потрібно позбавитися гілки у віддаленому репозиторії, використовуйте git push –delete origin [branch-name] .

Влити гілки – git merge [branch-name]. Вливає гілку branch-name у гілку, в якій ви перебуваєте.

Перебазувати комміти – git rebase [branch-name]. Перебазує комміти з гілки, в якій ви перебуваєте, на гілку [branch-name] .

Створити точну копію коммітів – git cherry-pick. Команду часто поєднують з git merge та git rebase, щоб зберегти лінійну історію коммітів. Тобто створюється точна копія коммітів, виконується перебазування та злиття гілок.

Відкладення та видалення

Відкласти зміни – git stash push. Відкладає зміни, щоб ви, наприклад, могли терміново перейти до іншого завдання. Щоб відкласти лише частину змін, використовуйте git stash –patch.

Повернути відкладені зміни – git stash pop.

Скасувати зміни, не додані до індексу – git restore [назва файлу] . Видаляє зміни в одному файлі. Щоб видалити зміни у всіх файлах, використовуйте git restore :/ .

Скасувати зміни, додані до індексу – git reset -hard. Повертає зміни з індексу та повністю їх скасовує.

Видалити коміт – git revert [195dfb0]. Замість [195dfb0] вказується хеш комміта, його можна дізнатися за допомогою команди git log.

Скасувати злиття з конфліктом – git merge -abort. Використовується, коли немає часу вирішувати конфлікт прямо тут і зараз.

Видалити зайве – git clean. Команда «наводить чистоту» — видаляє файли, що не відстежуються, з робочого каталогу.

✅ Більше інформації про роботу з Git та практичні навички ви отримаєте на курсі про Git та GitHub.

"Доктайп" – журнал про фронтенд. Читайте, слухайте та навчайтеся з нами.