Pergunta

Estou procurando um comando git para me ajudar com minhas ramificações de recursos quando elas estiverem prontas para entrar no Master.Este comando git compactaria todas as minhas alterações no meu branch em um único commit em cima do master.Eu faço isso hoje com:

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

Onde 4 é o número de commits para squash.No entanto, isso exige que eu saiba quantos commits tenho.Eu faço isso hoje executando:

git log HEAD...origin/master

e depois contando os commits.

Sinto que deveria haver uma maneira melhor de fazer isso.Ou é assim que todo mundo faz também?

Foi útil?

Solução

Tudo o que tem a fazer é:

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

Enquanto o documentos para git merge --squash dizer:

Produza a árvore de trabalho e o estado do índice como se uma mesclagem real tivesse acontecido (exceto pelas informações de mesclagem), mas não faça realmente um commit ou mova o HEAD, nem registre $GIT_DIR/MERGE_HEAD para fazer com que o próximo comando git commit crie uma mesclagem comprometer-se.Isso permite que você crie um único commit no topo do branch atual cujo efeito é o mesmo de mesclar outro branch (ou mais no caso de um polvo).

Depois disso, você pode git commit suas alterações que já estão preparadas.

Outras dicas

Aqui está o que eu faço, obtido com muita experiência trabalhando em equipes maiores:

# 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

Espero que isto ajude!

Eu acho que você está procurando git merge --squash.Ele deve trazer os commits do seu branch de recursos para o master e comprimi-los, para que você possa criar um único commit.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top