Як перезаписати локальні файли? | robot_dreams
Для відстеження статусу замовлення - авторизуйтесь
Введіть код, який був надісланий на пошту Введіть код із SMS, який був надісланий на номер
 
Код дійсний протягом 2 хвилин Код з SMS дійсний протягом 2 хвилин
Ви впевнені, що хочете вийти?
Сеанс завершено
На головну
Як перезаписати локальні файли за допомогою команди git pull?

Як перезаписати локальні файли за допомогою команди git pull?

Щоб не втратити правки та дані

Git — це безоплатна розподілена система контролю версій (СКВ) з відкритим вихідним кодом, призначена для швидкої та ефективної роботи з проєктами будь-якого масштабу. Git дає змогу різним розробникам паралельно працювати над кодом в окремих гілках, експериментувати з функціоналом та релізити лише те, що дійсно пройшло перевірку, не ламаючи вже робочий код. Не менш важливою перевагою СКВ є можливість повернути проєкт до будь-якої його попередньої версії. 

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

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

Якщо стисло описати процес роботи із СКВ, то можна виділити два основних репозиторії, з якими працюють розробники:

  • Локальний — це копія проєкту на локальному комп’ютері. У ньому додають, змінюють та комітять файли.
  • Віддалений — це репозиторій на сервері (наприклад, GitHub, GitLab, Bitbucket), з якого можна отримувати оновлення або надсилати свої зміни.

Далеко не всі команди в Git вимагають мережевого підключення для своєї роботи, оскільки майже всі вони оперують локальною копією проєкту. Проте, коли потрібно з віддаленого проєкту завантажити зміни та обʼєднати їх у локальній гілці, вам знадобиться команда git pull.

Як працює git pull

git pull — це комбінація двох команд:

1. git fetch — завантажує зміни з віддаленого репозиторію.

2. git merge — зливає отримані зміни з поточною локальною гілкою.

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

Команда git pull запускає git fetch із заданими параметрами, а потім, залежно від параметрів конфігурації або прапорів командного рядка, викликає git rebase чи git merge для узгодження гілок, що відрізняються:

  • git merge — створює новий коміт об’єднання (merge commit), який містить зміни з обох гілок. Історія залишається розгалуженою.
  • git rebase — переміщує локальні коміти поверх оновленої віддаленої гілки, змінюючи їхню історію. Це має такий вигляд, ніби всі зміни зроблено послідовно, без розгалужень.

Розглянемо на прикладі

Існують віддалений та локальний репозиторії. На останньому зберігається головна гілка. Припустимо, що в точці E локальний та віддалений репозиторії мають відмінності.

В такому випадку git pull витягне віддалені коміти, що відрізняються (A-B-C). У разі використання git merge буде створено новий локальний коміт H. А якщо застосовують git rebase, коміти A-B-C буде додано поверх змін у локальній гілці без нового коміту H.

Як оновити локальний репозиторій

Перед виконанням git pull переконайтеся, що всі важливі зміни збережено, оскільки незакомічені правки у відстежуваних файлах буде втрачено. Це означає, що якщо ви модифікували файли, які вже перебувають під контролем версій (Git їх відстежує), але не закомітили зміни, вони зникнуть після оновлення. Навіть якщо ці зміни проіндексовані за допомогою git add, але ще не закомічені, git pull перезапише їх. Однак файли, які не відстежуються Git (не додані через git add), залишаться без змін.

Швидкий спосіб перезапису локальних змін

1. Зробіть резервну копію поточної гілки:

git branch backup-main

2. Оновіть усі зміни з віддаленого репозиторію:

git fetch --all

3. Перезапишіть локальну гілку змінами з віддаленої:

git reset --hard origin/main

Команда git reset скидає головну гілку до того, що ви щойно отримали. Параметр --hard змінює всі файли у вашому робочому дереві відповідно до файлів у origin/main. Це незворотна операція, якщо зміни не закомічено!

Збереження незакомічених змін

1. Якщо не хочете втрачати незакомічені зміни, тимчасово збережіть їх:

git stash

2. Перезапишіть локальні файли:

git reset --hard origin/main

3. Поверніть сховані зміни після git pull:

git stash pop

Спосіб із git stash дає змогу зберегти ваші незакомічені зміни, але візьміть до уваги, що за повернення змін (stash pop) можуть виникнути конфлікти під час злиття.

Підсумки

Команда git pull — це зручний спосіб оновити локальний репозиторій відповідно до змін у віддаленому сховищі. Однак перед її виконанням переконайтеся, чи всі важливі зміни збережені, адже є ризик втратити незакомічені правки.  

Щоб уникнути конфліктів та несподіваних змін, дотримуйтеся простих порад: 

  • переглядайте зміни перед їхнім злиттям за допомогою git fetch;
  • зберігайте незакомічені зміни за допомогою git stash;
  • створюйте резервні копії важливих гілок перед оновленням.  

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

Ще статті
Порівнюємо швидкість, якість і відповідальність за результат