Eu tenho um abrir PR em um branch chamado feature-b
que em breve será intercalado main
. No entanto, eu escrevi para meu apoio feature-a
branch, que está em curso. Eu quero continuar a trabalhar feature-a
e aproveitar o trabalho que eu fiz na feature-b
antes de ter sido intercalado main
.
Qual é a melhor forma de fazer isso? A nossa mescla de main
são exterminados, para todos os compromete-se em feature-b
vai ser reescrito como um único commit quando ele é mesclado para main
. Portanto, a alteração da base feature-a
no feature-b
agora resultará em um conflito futuro dor quando eu direta feature-a
para main
porque mesmo que as mudanças tenham sido feitas em diferentes compromete-se.
Qual é a melhor maneira para mim, para incluir as alterações feitas em feature-b
no meu feature-a
ramo enquanto minimiza o futuro de dor, quando eu finalmente série feature-a
para main
?
ATUALIZAÇÃO
Eu fui em frente e:
- Realocado
feature-a
nofeature-b
- Fez mais mudanças (apenas 1 commit) para
feature-a
enquantofeature-b
foi revisto - Squash-mesclado
feature-b
uma vez que ela foi aprovada (sem outras alterações necessárias, de modo afeature-a
já tem o código exato que foi intercalado) - Puxou mais recente
main
e realocadosfeature-a
em cima dela
Como se temia, o git reclama que vários arquivos são "tanto modificado" ou "ambos adicionados". Isso só seria um pouco chato, mas simples para corrigir. O que o torna incrivelmente confuso - especialmente se a qualquer passagem do tempo passou - o intercalar comentários nos arquivos.
Apesar de ambos os main
e feature-a
ramos tem o exato mesmo código em todos os arquivos, eu fico super chato comportamento:
- Para o "tanto adicionado" arquivos, mesclar os comentários são adicionados para a "CABEÇA" (Actual)" e "pai da #HASH (mensagem de commit)". Eu sou forçado a escolher um ou outro, mesmo que eles são exatamente o mesmo!
- Para o "tanto modificado" de arquivos, é ainda pior. A "CABEÇA" (Actual)" mostra o código correto. No entanto, o "pai da #HASH (mensagem de commit)" seção mostra metade do código. Novamente, apesar de ambos os ramos têm todo o código!! Eu não te miúdo, aceitando a "alteração de entrada" (como identificado pelo VS Código) irá remover o código que está em ambos os ramos.
Se eu não tivesse feito essas alterações em rápida sucessão, eu estaria irremediavelmente perdido e confuso sobre o que o git está me mostrando. O que de fato aconteceu várias vezes no passado, mas eu não poderia colocar um dedo sobre o que estava acontecendo de errado. Agora que eu tenha reproduzido esta e verificado o comportamento, eu sou completamente aturdidos, como o que o git está fazendo e como as pessoas estão lidando com este cenário.
ATUALIZAÇÃO 2
OK, eu gosto de ver porque ele estava indo para remover o código de agora. É porque as alterações que fiz no feature-b
foram em vários compromete-se, e aqueles que se compromete acabou sendo esmagado quando a série para main
ocorreu. Este é, sem dúvida, a origem da dor e por isso que eu estou tentando descobrir uma mais sã de fluxo de trabalho.