Предположим, я работаю над feature0
и делаю запрос на извлечение.В ожидании его одобрения я бы хотел поработать над feature1
, который основан на feature0
.
git checkout -b feature0
# make some changes
git commit -a -m "add feature 0"
git push origin feature0
На этом этапе я делаю запрос на извлечение, и я разветвляюсь feature0
:
# current branch is `feature0`
git checkout -b feature1
# make some changes
git commit -a -m "add feature 0"
git push origin feature1
Теперь feature0
объединяется с мастером, а feature1
содержитизменения feature0
.Таким образом, git log
будет отображать что-то вроде этого:
... add feature 1
... add feature 0
... some commit in master
Я не хочу, чтобы изменения в feature0
отображались в запросе на получение, поэтому мне нужно выполнить ребазинг перед выполнением запроса на получение:
git rebase master
Хотя это приведет к желаемому эффекту, проблема в том, что мне нужно сделать принудительный толчок, прежде чем открывать запрос на извлечение.
git push origin feature1 -f
Теперь мой вопрос заключается в том, является ли этоправильный подход к работе над веткой, основанный на другой ветке, которая ожидает слияния, или можно ли сделать это более элегантным способом (не требуя принудительных проталкиваний в удаленный репозиторий, что я считаю неизбежным при использовании rebase
).
Этот вопрос основан на этом .Однако в принятом ответе конкретные команды опущены, и не упоминается проблема с отправкой изменений в удаленный репозиторий.