Git rebase (Merge Squash) моя ветвь функции на другую ветку
Я ищу команду git, чтобы помочь мне с моими веткими функций, когда они будут готовы войти в Master. Эта команда git выдаст все мои изменения в моей ветке в единую фиксацию поверх мастера. Я делаю это сегодня с помощью:
git rebase origin/master
git rebase -i HEAD~4
Где 4 - количество коммитов для сквоша. Тем не менее, это требует от меня знать, сколько у меня есть коммитов. Я делаю это сегодня, запустив:
git log HEAD...origin/master
а затем подсчитывает коммиты.
Мне кажется, что должен быть лучший способ сделать это. Или это так, как и все остальные?
Ответы
Ответ 1
Все, что вам нужно сделать, это:
git checkout feature_branch
git rebase master
git checkout master
git merge --squash feature_branch
Как docs для git merge --squash
скажите:
Создайте рабочее дерево и состояние индекса, как если бы произошло реальное слияние (за исключением информации о слиянии), но на самом деле не делайте фиксацию или перемещение HEAD, а также не записывайте $GIT_DIR/MERGE_HEAD, чтобы вызвать следующую команду git для создания комманды слияния. Это позволяет создать единую фиксацию поверх текущей ветки, эффект которой совпадает с объединением другой ветки (или более в случае осьминогов).
После этого вы можете git commit
изменить свои изменения.
Ответ 2
Вот что я делаю, собранный из большого опыта работы в более крупных командах:
# 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
Надеюсь, это поможет!
Ответ 3
Я думаю, что вы ищете git merge --squash
. Он должен вносить коммиты из вашей ветки функций в мастер и выкалывать их, чтобы вы могли создать единую фиксацию.