То, что вы описываете , это перебазирование. Вы просто делаете это в неправильном направлении. Допустим, master
баллов за фиксацию f
и your-branch
баллов за g
.
a---b---d---f ← master
\
c---e---g ← your-branch
Чтобы взять ветку и начать ее с коммита f
, вы должныребаз your-branch
на master
. Соответствующая команда:
git rebase master your-branch
Сначала Git проверит ветку, указанную в качестве второго аргумента (здесь your-branch
). Таким образом, вы можете опустить второй аргумент, если вы уже отметили эту ветвь.
Первый аргумент будет использоваться для определения базового коммита, который в данном примере равен b
. Git будет использовать первого общего предка между предоставленной вами веткой и выбранной вами веткой.
Если вы не указали --onto
, Git снова будет использовать первый аргумент для определения новой базы. В данном случае это коммит f
. Результат:
a---b---d---f ← master
\
c'--e'--g' ← your-branch
Просто имейте в виду, что хеши коммитов изменятся, поскольку у вас, по сути, есть новые коммиты. Я пометил новые коммиты простыми числами ('
).
Я также недавно пытался сделать git pull --rebase upstream master
, а затем объединить мастер с веткой.
Вы не хотите сливать master
в свою ветку после перебазирования на нее. Перебазирование делает именно то, что вы описали, и вам не нужны дополнительные шаги.