Git rebase (слияние сквоша) моя ветвь функции на другую ветвь
Я ищу команду git, чтобы помочь мне с моими ветвями функций, когда они будут готовы перейти в Master. Эта команда git раздавит все мои изменения в моей ветке в один коммит поверх master. Я делаю это сегодня:
git rebase origin/master
git rebase -i HEAD~4
где 4-количество коммитов для сквоша. Однако для этого мне нужно знать, сколько у меня коммитов. Я делаю это сегодня работает:
git log HEAD...origin/master
и затем подсчет коммитов.
Я чувствую, что там должно быть будьте лучшим способом сделать это. Или так же поступают и все остальные?
3 ответа:
все, что вам нужно сделать, это:
git checkout feature_branch git rebase master git checkout master git merge --squash feature_branch
как docs на
git merge --squash
говорят:создайте рабочее дерево и состояние индекса, как если бы произошло реальное слияние (за исключением информации о слиянии), но на самом деле не делайте фиксацию или не перемещайте головку, а также не записывайте $GIT_DIR/MERGE_HEAD, чтобы заставить следующую команду git commit создать фиксацию слияния. Это позволяет создать одну фиксацию поверх текущей ветви, эффект которой будет таким же, как при слиянии другая ветвь (или больше в случае осьминога).
после этого, вы можете
git commit
ваши изменения, которые уже размещены.
вот что я делаю, набравшись большого опыта работы в больших командах:
# Get latest from master git checkout master git pull --rebase # rebase master into your feature branch git checkout feature/my-feature git rebase master --preserve-merges # merge feature into master git checkout master # DO ONLY ONE of the 2 options below # if you only have one or (maybe) 2 commits in your feature branch git merge feature/my-feature # OR # this forces an empty merge commit (useful if we need to roll things back) git merge --no-ff feature/my-feature # if you use Github, this should also close the pull request git push origin master
надеюсь, что это помогает!