git add file1
git commit -m "b2c1"
git rebase B1
Эта rebase не требуется, так как прямой родитель b2c1 - B1. Предполагая, что B2 был создан из B1 на начальном этапе.
git commit -m "b2c2"
git push
git rebase B1
Почему вы делаете ребаз после push , это противоречит интуиции. Я бы посоветовал не делать push до тех пор, пока вы не настроите свою локальную историю так, как вы хотите, а затем опубликуйте ее с помощью push
git checkout B1
git pull
Хорошо, это обновит ваш локальный B1 в зависимости от того, что в настоящее время имеет пульт .
git checkout B2
git rebase B1
Это первый ребаз, который я считаю действительно необходимым, но только если B1 изменился.
git add file1
git commit -m "b2c3"
git rebase B1
Опять у вас есть ребаз , который не нужен
git merge B1
Вам не нужно делать слияние из B1 в B2 на этом этапе, поскольку B1 не изменилось.
Похоже, у вас могут быть некоторые фундаментальные заблуждения относительно git
и того, как он работает. Что, если вы новичок в git
, не так уж удивительно. Мне понадобилось некоторое время, чтобы обернуть вокруг него голову.
Я бы посоветовал вам взглянуть на книгу Pro Git : https://git -scm.com / book / ru / v2
чтобы помочь понять некоторые из основных понятий.
Мой лучший совет - стараться делать вещи простыми, атомарными и продуманными. Помнить эти вещи вам очень поможет.
git push B1
git checkout B1
git pull
git merge B2
git push
git branch --merged master
git branch -d B2
git checkout -b B3
git pull
git add file1
git commit -m "b3c1"
git push
git rebase -i HEAD~5
git push -f
git add file1
git commit -m "b3c2"
git add file2 file3 file4
git commit -m "b3c3"
git stash
git pull
git push
git checkout B3
git stash push
git stash save
git stash apply
git checkout B3
git rebase B1
git checkout -- .
git checkout B1
git merge B3
git push