logo

Git Rebase

Перебазування — це процес повторного застосування комітів поверх іншого базового відключення. Він використовується для застосування послідовності комітів із різних гілок до остаточного коміту. Це альтернатива команді git merge. Це лінійний процес злиття.

У Git термін rebase називається процесом переміщення або об’єднання послідовності комітів до нового базового коміту. Перебазування є дуже корисним і воно візуалізує процес у середовищі процесу розгалуження функцій.

Бажано перебазувати гілку перед її об’єднанням.

Git Rebase

Загалом, це альтернатива команді git merge. Злиття завжди змінює запис вперед. Для порівняння, rebase є привабливим інструментом для переписування історії в git. Він об’єднує різні коміти один за одним.

Припустімо, ви зробили три коміти у своїй гілці master і три в іншій гілці під назвою test. Якщо ви об’єднаєте це, то за певний час буде об’єднано всі коміти. Але якщо ви перебазуєте його, то він буде об’єднаний лінійним чином. Розгляньте зображення нижче:

Git Rebase

На зображенні вище описано, як працює git rebase. Три коміти гілки master лінійно об’єднані з комітами тестової гілки.

Злиття є найпростішим способом об’єднання гілок. Він виконує тристороннє злиття двох останніх комітів гілок.

Як перебазувати

Коли ви зробили деякі коміти на гілці функцій (test гілці) і деякі в гілці master. Ви можете перебазувати будь-яку з цих гілок. Використовуйте команду git log для відстеження змін (історія комітів). Перейдіть до потрібної гілки, яку ви хочете перебазувати. Тепер виконайте команду rebase наступним чином:

Синтаксис:

 $git rebase 

Якщо у гілці є конфлікти, вирішіть їх і виконайте наведені нижче команди, щоб продовжити зміни:

 $ git status 

Використовується для перевірки стану,

 $git rebase --continue 

Наведена вище команда використовується для продовження внесених змін. Якщо ви хочете пропустити зміну, ви можете пропустити наступним чином:

переліки Java
 $ git rebase --skip 

Коли перебазування завершено. Перемістіть сховище до джерела. Розгляньте наведений нижче приклад, щоб зрозуміти команду git merge.

Припустимо, що у вас є гілка тест2 над яким ви працюєте. Зараз ви перебуваєте на гілці test2 і внесли деякі зміни у файл проекту новий файл1.txt .

Додайте цей файл до репозиторію:

 $ git add newfile1.txt 

Тепер зафіксуйте зміни. Використовуйте команду нижче:

 $ git commit -m 'new commit for test2 branch.' 

Результат буде виглядати так:

сортувати arraylist
 [test2 a835504] new commitfor test2 branch 1 file changed, 1 insertion(+) 

Переключити гілку на головну:

 $ git checkout master 

Вихід:

 Switched to branch 'master.' Your branch is up to date with 'origin/master.' 

Тепер ви на головній гілці. Я додав зміни до свого файлу, каже новий файл.txt . Команда нижче використовується для додавання файлу в репозиторій.

 $ git add newfile.txt 

Тепер зафіксуйте файл для змін:

 $ git commit -m ' new commit made on the master branch.' 

Вихід:

 [master 7fe5e7a] new commit made on master 1 file changed, 1 insertion(+) HiMaNshU@HiMaNshU-PC MINGW64 ~/Desktop/GitExample2 (master) 

Щоб перевірити історію журналу, виконайте наведену нижче команду.

 $ git log --oneline 

Вихід:

Git Rebase

Як ми бачимо в історії журналу, у гілці master є новий комміт. Якщо я хочу перебазувати свою гілку test2, що мені робити? Перегляньте наведений нижче сценарій перебазування гілки:

Перебазувати гілку

Якщо ми маємо багато комітів із різних гілок і хочемо об’єднати їх в одну. Для цього у нас є два варіанти: об’єднати або перебазувати. Добре перебазувати свою гілку.

З наведеного вище прикладу ми взяли на себе основну гілку та хочемо перебазувати її на гілку test2. Давайте розглянемо наведені нижче команди:

 $ git checkout test2 

Ця команда переключить вас на гілку test2 від головного.

Вихід:

 Switched to branch 'test2.' 

Тепер ви на гілці test2. Отже, ви можете перебазувати гілку test2 за допомогою головної гілки. Перегляньте команду нижче:

 $ git rebase master 

Ця команда перебазує гілку test2 і відобразить як Застосування: новий коміт у гілці test2 . Розглянемо наведений нижче результат:

Вихід:

Git Rebase

Git Interactive Rebase

Git полегшує роботу за допомогою Interactive Rebase; це потужний інструмент, який дозволяє виконувати різні операції, наприклад редагувати, переписувати, змінювати порядок, і більше про існуючі коміти. Interactive Rebase можна використовувати лише для поточної перевіреної гілки. Тому встановіть локальну гілку HEAD на бічній панелі.

Git interactive rebase можна викликати за допомогою команди rebase, просто введіть разом із командою rebase. тут ' i ' означає інтерактивний. Синтаксис цієї команди наведено нижче:

Синтаксис:

setinterval javascript
 $ git rebase -i 

У ньому будуть перераховані всі доступні інтерактивні параметри.

Вихід:

Git Rebase

Після виведення даних відкриється редактор із доступними параметрами. Розглянемо наведений нижче результат:

Вихід:

Git Rebase

Коли ми виконуємо команду git interactive rebase, відкриється текстовий редактор за замовчуванням із наведеним вище результатом.

Параметри, які він містить, перераховані нижче:

  • Виберіть
  • Перефразуйте
  • Редагувати
  • Сквош
  • Полагодити
  • Викон
  • Перерва
  • Падіння
  • Мітка
  • Скинути
  • Об’єднати

Наведені вище параметри виконують свої специфічні завдання за допомогою git-rebase. Давайте коротко розберемося в кожному з цих варіантів.

Виберіть (-p):

Pick означає, що коміт включено. Порядок комітів залежить від порядку команд вибору під час перебазування. Якщо ви не хочете додавати комміт, вам потрібно видалити весь рядок.

Переформулювати (-r):

Reword дуже схожий на команду pick. Параметр reword призупиняє процес rebase і дає можливість змінити повідомлення коміту. Це не впливає на зміни, зроблені комітом.

Редагувати(и):

Параметр редагування дозволяє вносити зміни до коміту. Внесення змін означає, що коміти можуть бути додані або повністю змінені. Ми також можемо зробити додаткові коміти перед командою rebase continue. Це дозволяє нам розділити великий комміт на менший; крім того, ми можемо видалити помилкові зміни, зроблені в коміті.

Сквош (-и):

Параметр squash дозволяє об’єднати два або більше комітів в один комміт. Це також дозволяє нам написати нове повідомлення коміту для опису змін.

Виправлення (-f):

Це дуже схоже на команду сквош. Він відхилив повідомлення коміту, який потрібно об’єднати. Попереднє повідомлення фіксації використовується для опису обох змін.

Exec (-x):

Параметр exec дозволяє виконувати довільні команди оболонки проти коміту.

Перерва (-б):

Опція розриву зупиняє перебазування лише в положенні. Він продовжить перебазування пізніше за допомогою ' git rebase --continue ' команда.

Падіння (-d):

Параметр drop використовується для видалення коміту.

Мітка (-l):

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

Скидання (-t):

Параметр скидання використовується для скидання головки до мітки.

рядки до цілих чисел

GitMerge проти Rebase

Найпоширенішим запитанням для користувачів git є те, коли використовувати команду merge, а коли використовувати rebase. Обидві команди схожі, і обидві використовуються для об’єднання комітів, зроблених різними гілками сховища.

Перебазування не рекомендується в спільній гілці, оскільки процес перебазування створить неузгоджені сховища. Для окремих осіб перебазування може бути кориснішим, ніж об’єднання. Якщо ви хочете побачити повну історію, вам слід скористатися злиттям. Merge відстежує всю історію комітів, а rebase переписує нову.

Команди git rebase називаються альтернативою git merge. Однак у них є деякі ключові відмінності:

Git Merge Git Rebase
Злиття створює остаточний комміт під час злиття. Git rebase не створює жодного коміту під час перебазування.
Він об’єднує всі коміти в один комміт. Він створює лінійну доріжку комітів.
Він створює графічну історію, яку може бути дещо складно зрозуміти. Це створює лінійну історію, яку можна легко зрозуміти.
Об’єднати дві гілки безпечно. Git 'rebase' займається серйозною операцією.
Об’єднання можна виконувати як у публічних, так і в приватних гілках. Використовувати перебазування на публічних гілках – неправильний вибір.
Об’єднання об’єднує вміст гілки функції з головною гілкою. Таким чином, основна гілка змінена, а історія гілки функції залишається незмінною. Перебазування головної гілки може вплинути на гілку функції.
Об’єднання зберігає історію. Перебазування переписує історію.
Git merge представляє всі конфлікти одночасно. Git rebase представляє конфлікти один за одним.