Git Rebase (слияние сквош) Моя особенность ветви на другую ветку

StackOverflow https://stackoverflow.com//questions/9622131

  •  09-12-2019
  •  | 
  •  

Вопрос

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

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

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

git log HEAD...origin/master
.

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

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

Это было полезно?

Решение

Все, что вам нужно сделать:

git checkout feature_branch
git rebase master
git checkout master
git merge --squash feature_branch
.

как the a href="http://linux.die.net/man/1/git-merge" rel="noreferrer"> Документы для git merge --squash говорят:

Создайте рабочее дерево и состояние индекса, как будто произошло реальное слияние (за исключением информации об объединении), но на самом деле не заказывайте обязательство или не перемещать голову, а также записывать $ git_dir / merge_head, чтобы привести к следующей команде 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.Он должен принести комбиниты из вашей функции филиала в мастер и раздавить их, чтобы вы могли создать один коммит.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top