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


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

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

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

git log HEAD...origin/master

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

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

3 52

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

надеюсь, что это помогает!

Я думаю, что вы ищете git merge --squash. Он должен ввести коммиты из ветви вашего объекта в master и раздавить их, чтобы вы могли создать один коммит.