Допустим, у нас есть следующая ситуация в git:
-
Созданный репозиторий:
mkdir GitTest2 cd GitTest2 git init
-
Некоторые изменения в мастере происходят и совершаются.
echo "On Master" > file git commit -a -m "Initial commit"
-
Feature1 разветвлен от мастера, и некоторая работа сделана:
git branch feature1 git checkout feature1 echo "Feature1" > featureFile git commit -a -m "Commit for feature1"
-
Тем временем в мастер-коде обнаружена ошибка и установлена ветка хотфикса
git checkout master git branch hotfix1 git checkout hotfix1
-
Ошибка исправлена в ветке исправлений и объединена с мастером (возможно, после запроса на просмотр/проверки кода):
echo "Bugfix" > bugfixFile git commit -a -m "Bugfix Commit" git checkout master git merge --no-ff hotfix1
-
Разработка на feature1 продолжается:
git checkout feature1
Теперь мой вопрос: скажем, мне нужно исправление в моей ветке функций, возможно, потому что там также происходит ошибка. Как я могу достичь этого, не дублируя коммиты в моей ветке функций? Я хочу запретить получение двух новых коммитов в моей ветки функций, которые не имеют отношения к реализации функции. Это особенно важно для меня, если я использую Pull Requests: все эти коммиты также будут включены в Pull Request и должны быть рассмотрены, хотя это уже было сделано (так как исправление уже есть в мастере).
Я не могу сделать git merge master --ff-only
: "fatal: невозможно выполнить перемотку вперед, прерывание.", Но я не уверен, помогло ли это мне.