Як поєднати останні N комітів Git

Git Commands

Освоєння стиснення комітів у Git:

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

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

Команда опис
git rebase -i HEAD~N Ініціює інтерактивне перебазування останніх N комітів.
pick Зберігає фіксацію як є під час інтерактивного перебазування.
squash Поєднує комміт із попереднім під час інтерактивного перебазування.
sed -i '1!s/pick/squash/' .git/rebase-merge/git-rebase-todo Автоматично замінює «pick» на «squash» для всіх комітів, крім першого, у списку завдань rebase.
git rebase --continue Продовжує процес перебазування після вирішення конфліктів.
git rebase --abort Перериває процес перебазування та повертається до стану перед початком перебазування.
HEAD~N Посилається на комміт N місць перед поточним HEAD.

Розуміння Git Commit Squashing

Перший скрипт використовує щоб ініціювати інтерактивне перебазування останніх N комітів. На інтерактивному екрані ви замінюєте «pick» на «squash» для комітів, які хочете об’єднати. Цей процес допомагає об’єднати кілька менших комітів в одне, роблячи вашу історію комітів чистішою та легшою для керування. Після редагування збережіть і закрийте редактор. Якщо є конфлікти, ви їх вирішуєте і продовжуєте .

Другий скрипт — сценарій Bash, який автоматизує процес стиснення. Він починається з перевірки, чи надано кількість комітів (N). Потім він запускається і використовує щоб замінити 'pick' на 'squash' для всіх, крім першого коміту, у списку завдань rebase. Це полегшує стиснення кількох комітів без редагування файлу вручну. Нарешті, він продовжує процес перебазування за допомогою , автоматично вирішуючи будь-які необхідні конфлікти.

Стисніть кілька комітів в одне за допомогою Git Rebase

Команди Git

git rebase -i HEAD~N
# Replace N with the number of commits you want to squash
# In the interactive rebase screen that appears, change 'pick' to 'squash' (or 's') for the commits you want to squash
# Save and close the editor
# Edit the commit message if needed, then save and close the editor again
# If there are conflicts, resolve them and then run
git rebase --continue
# Your last N commits are now squashed into one commit

Автоматизація стискання комітів за допомогою сценарію оболонки

Скрипт Bash

#!/bin/bash
if [ -z "$1" ]
then
  echo "Usage: ./squash_commits.sh <N>"
  exit 1
fi
git rebase -i HEAD~$1
# Automatically replace 'pick' with 'squash' for all but the first commit
sed -i '1!s/pick/squash/' .git/rebase-merge/git-rebase-todo
git rebase --continue

Розширені методи стиснення Git

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

Також корисно знати, як перервати перебазування, якщо щось піде не так. Команда зупиняє процес перебазування та повертає ваш репозиторій до попереднього стану до початку перебазування. Це гарантує, що ви можете безпечно скасувати будь-які зміни, внесені під час процесу перебазування. Розуміння цих команд може значно покращити вашу здатність ефективно керувати складними історіями Git.

  1. Що означає стиснення комітів?
  2. Стиснення комітів означає об’єднання кількох комітів в одне, щоб спростити історію комітів.
  3. Чому я повинен скасовувати коміти?
  4. Стиснення комітів може зробити вашу історію проекту чистішою та легшою для читання, особливо якщо використовується багато невеликих комітів.
  5. Як запустити інтерактивне перебазування?
  6. Використовуйте команду , замінивши N на кількість комітів, які ви хочете стиснути.
  7. Що означають «вибрати» та «сквош» в інтерактивному перебазуванні?
  8. «Pick» зберігає комміт як є, тоді як «squash» поєднує його з попереднім комітом.
  9. Як вирішити конфлікти під час перебазування?
  10. використання щоб виявити конфлікти, вирішити їх вручну, а потім використовувати і .
  11. Чи можу я перервати перебазування, якщо щось піде не так?
  12. Так, можна використовувати щоб зупинити перебазування та повернутися до попереднього стану.
  13. Які переваги використання сценарію Bash для стиснення комітів?
  14. Сценарій Bash автоматизує процес, заощаджуючи час і знижуючи ризик помилок вручну.
  15. Чи є спосіб автоматично стиснути коміти в rebase?
  16. Так, за допомогою сценарію для зміни списку завдань rebase , ви можете автоматично змінити «pick» на «squash».

Підсумок Git Commit Squashing

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