Подтвердить что ты не робот

Git rebase (Merge Squash) моя ветвь функции на другую ветку

Я ищу команду git, чтобы помочь мне с моими веткими функций, когда они будут готовы войти в Master. Эта команда git выдаст все мои изменения в моей ветке в единую фиксацию поверх мастера. Я делаю это сегодня с помощью:

git rebase origin/master
git rebase -i HEAD~4

Где 4 - количество коммитов для сквоша. Тем не менее, это требует от меня знать, сколько у меня есть коммитов. Я делаю это сегодня, запустив:

git log HEAD...origin/master

а затем подсчитывает коммиты.

Мне кажется, что должен быть лучший способ сделать это. Или это так, как и все остальные?

4b9b3361

Ответ 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. Он должен вносить коммиты из вашей ветки функций в мастер и выкалывать их, чтобы вы могли создать единую фиксацию.