|  | 
|  | 1 | + | 
|  | 2 | +--- | 
|  | 3 | + | 
|  | 4 | +# Инструкция для работы с веткой `bugfix/1` | 
|  | 5 | + | 
|  | 6 | +## Создание ветки `bugfix/1` и добавление коммитов | 
|  | 7 | +1. **Создайте ветку `bugfix/1` и переключитесь на неё**: | 
|  | 8 | + ```bash | 
|  | 9 | + git checkout -b bugfix/1 | 
|  | 10 | + ``` | 
|  | 11 | + | 
|  | 12 | +2. **Добавьте коммиты в ветку `bugfix/1`**: | 
|  | 13 | + - Скрипт автоматически создаст два коммита (с номерами 28 и 29) и отправит их в удалённый репозиторий: | 
|  | 14 | + ```bash | 
|  | 15 | + for i in {28..29}; do | 
|  | 16 | + cd /Users/andreyshabunov/PhpstormProjects/git-practics/bugfix1/ | 
|  | 17 | + echo "Bug fix commit $i" > bugfix1_$i.txt | 
|  | 18 | + cd /Users/andreyshabunov/PhpstormProjects/git-practics/ | 
|  | 19 | + git add . | 
|  | 20 | + git commit -m "Bug fix commit $i" | 
|  | 21 | + git push -u origin bugfix/1 | 
|  | 22 | + done | 
|  | 23 | + ``` | 
|  | 24 | + | 
|  | 25 | +--- | 
|  | 26 | + | 
|  | 27 | +## Обновление ветки `main` | 
|  | 28 | +3. **Переключитесь на ветку `main`**: | 
|  | 29 | + ```bash | 
|  | 30 | + git checkout main | 
|  | 31 | + ``` | 
|  | 32 | + | 
|  | 33 | +4. **Получите актуальные изменения из удалённого репозитория**: | 
|  | 34 | + ```bash | 
|  | 35 | + git pull origin main | 
|  | 36 | + ``` | 
|  | 37 | + | 
|  | 38 | +--- | 
|  | 39 | + | 
|  | 40 | +## Выполнение rebase ветки `bugfix/1` на `main` | 
|  | 41 | +5. **Переключитесь на ветку `bugfix/1`**: | 
|  | 42 | + ```bash | 
|  | 43 | + git checkout bugfix/1 | 
|  | 44 | + ``` | 
|  | 45 | + | 
|  | 46 | +6. **Выполните rebase ветки `bugfix/1` на `main`**: | 
|  | 47 | + ```bash | 
|  | 48 | + git rebase main | 
|  | 49 | + ``` | 
|  | 50 | + - **Если возникнут конфликты**: | 
|  | 51 | + - Разрешите конфликты вручную. | 
|  | 52 | + - Добавьте изменённые файлы: | 
|  | 53 | + ```bash | 
|  | 54 | + git add <file> | 
|  | 55 | + ``` | 
|  | 56 | + - Продолжите rebase: | 
|  | 57 | + ```bash | 
|  | 58 | + git rebase --continue | 
|  | 59 | + ``` | 
|  | 60 | + | 
|  | 61 | +--- | 
|  | 62 | + | 
|  | 63 | +## Слияние ветки `bugfix/1` в `main` с использованием `--no-ff` | 
|  | 64 | +7. **Переключитесь на ветку `main`**: | 
|  | 65 | + ```bash | 
|  | 66 | + git checkout main | 
|  | 67 | + ``` | 
|  | 68 | + | 
|  | 69 | +8. **Выполните слияние (`merge`) ветки `bugfix/1` в `main` с флагом `--no-ff`**: | 
|  | 70 | + ```bash | 
|  | 71 | + git merge --no-ff bugfix/1 -m "Merge bugfix/1 into main" | 
|  | 72 | + ``` | 
|  | 73 | + - Флаг `--no-ff` гарантирует создание коммита слияния, даже если возможен fast-forward. | 
|  | 74 | + | 
|  | 75 | +9. **Отправьте изменения в удалённый репозиторий**: | 
|  | 76 | + ```bash | 
|  | 77 | + git push -u origin main | 
|  | 78 | + ``` | 
|  | 79 | + | 
|  | 80 | +--- | 
|  | 81 | + | 
|  | 82 | +## Итоговое состояние репозитория | 
|  | 83 | +10. **Проверьте историю коммитов**: | 
|  | 84 | + ```bash | 
|  | 85 | + git log --oneline --graph --all | 
|  | 86 | + ``` | 
|  | 87 | + - После выполнения скрипта история будет выглядеть примерно так: | 
|  | 88 | + ```plaintext | 
|  | 89 | + * commit_hash Merge bugfix/1 into main | 
|  | 90 | + |\   | 
|  | 91 | + | * commit_hash Bug fix commit 29 | 
|  | 92 | + | * commit_hash Bug fix commit 28 | 
|  | 93 | + * | commit_hash Previous commit in main | 
|  | 94 | + ``` | 
|  | 95 | + | 
|  | 96 | +--- | 
|  | 97 | + | 
|  | 98 | +## Дополнительные рекомендации | 
|  | 99 | +- **Создайте резервную копию ветки `bugfix/1` перед rebase**: | 
|  | 100 | + Если что-то пойдёт не так, вы сможете вернуться к исходному состоянию: | 
|  | 101 | + ```bash | 
|  | 102 | + git branch bugfix/1-backup bugfix/1 | 
|  | 103 | + ``` | 
|  | 104 | + | 
|  | 105 | +- **Удалите ветку `bugfix/1` после слияния**: | 
|  | 106 | + Если ветка больше не нужна, удалите её: | 
|  | 107 | + ```bash | 
|  | 108 | + git branch -d bugfix/1 # Удалить локальную ветку | 
|  | 109 | + git push origin --delete bugfix/1 # Удалить удалённую ветку | 
|  | 110 | + ``` | 
|  | 111 | + | 
|  | 112 | +--- | 
|  | 113 | + | 
|  | 114 | +## Краткое описание изменений | 
|  | 115 | +- **Rebase**: Перемещает коммиты из `bugfix/1` на вершину `main`, делая историю линейной. | 
|  | 116 | +- **Merge с `--no-ff`**: Создаёт коммит слияния, чтобы явно показать, что ветка `bugfix/1` была влита в `main`. | 
0 commit comments