Aqui está o fluxo de trabalho que estou tentando, depois de assistir a esteVídeo Git/TFS.
Então eu crio um branch do meu branch de desenvolvimento
$ git checkout -b my-feature-branch development
Em seguida, faço uma alteração, preparo, confirmo e envio as alterações para o servidor TFS.
Agora, quando vou para a interface da web do TFS, tenho um "my-feature-branch" no servidor.
Clico em "Nova solicitação pull" e crio um PR em desenvolvimento e aceito este PR. Este processo exclui o "my-feature-branch" no servidor TFS, mas permanece na minha máquina local.
Tudo está ótimo neste momento.
De volta à minha máquina local, saia do ramo de recursos:
git checkout development
Exclua a filial local
git branch -d my-feature-branch
warning: deleting branch 'my-feature-branch' that has been merged to
'refs/remotes/origin/test-pr', but not yet merged to HEAD. Deleted branch my-feature-branch (was d525adc).
Receber as últimas -
git pull -p
Às vezes, e posso estar fazendo o pull antes da exclusão, a exclusão falha e tenho que forçar a exclusão.
git branch -D my-feature-branch
Meu fluxo de trabalho está errado? Devo fazer algum tipo de mesclagem antes da exclusão? Por que o git não sabe que o branch do recurso foi mesclado como uma solicitação pull após o pull e me permite excluir sem erros?
Responder1
Por que o git não sabe que o branch do recurso foi mesclado como uma solicitação pull após o pull e me permite excluir sem erros?
É difícil saber pelas informações que você forneceu, mas aqui estão duas suposições:
Tem certeza de que está puxando antes de excluir a ramificação do recurso local? Caso contrário, é claro que o branch principal não terá os novos commits.
Como você está mesclando o ramo de recursos? Com uma mesclagem regular ou uma mesclagem de squash? Uma mesclagem regular incorpora os commits do branch de recursos no branch principal, para que o Git saiba que está tudo lá. Uma fusão de squash, OTOH, incorpora todos oscontentedo branch do recurso, mas faz isso criando um novo commit, e o Git não rastreia o fato de que o novo commit compactado foi gerado a partir dos commits do branch do recurso, então ele não pensa que o branch do recurso foi mesclado.
(Eu recomendo fortementenãousando mesclagens de squash. Manter os commits originais, como faz uma mesclagem padrão, ajuda a fazer o Git funcionar melhor.)