Tag for release branch on both develop and master branch?
Tag this release
$ git tag -a "v1.6" -m "Release v1.6"
Push to remote
$ git push origin develop --follow-tags
O que parece funcionar muito bem. No entanto, também preciso me fundir para dominar e gostaria de levá-lo lá pela mesma razão. Quando tento criar a etiqueta no lançamento, obviamente tenho um conflito. Então, até agora eu tenho criado uma etiqueta como esta:
$ git tag -a "v1.6-master" -m "Release v1.6"
isto funciona bem, mas parece que deve haver uma maneira de criar uma etiqueta e ser capaz de checar essa etiqueta em qualquer ramo que você esteja. Sinto que me está a escapar algo essencial.
5 answers
Mas parece que deve haver uma forma de criar uma etiqueta e ser capaz de verificar essa etiqueta em qualquer ramo onde esteja. Sinto que me está a escapar algo essencial.Se quer dizer que acha que está a perder a forma de fazer com que as etiquetas se comportem como descreve... não estás. Não há nenhum. Então eu acho que o que está faltando é uma compreensão completa de como tags, branches e commits se relacionam no git.
Uma etiqueta é um ref-A pointer para um commit específico. A branch is also a ref, but it happens to be a ref that is expected to move in a particular way.
As pessoas muitas vezes querem falar sobre commits ou tags sendo "em" um ramo particular; isso não é realmente uma coisa no git (ao contrário de outros sistemas de controle de versão). Um branch aponta para um commit, e outros commits são alcançáveis (por ponteiros-pai) a partir desse commit, e uma tag pode apontar para um commit que é alcançável a partir de um ref branch... mas é só isso. Se a sua persistência topologia está de acordo com determinados pressupostos, em seguida, você pode aproximar a noção de "uma marca no ramo", dizendo que a marca aponta para uma consolidação acessível a partir do ramo e não acessível a partir do principal ramo - mas você estaria usando monte de conceitos que o git não gosta, (incluindo a noção de um "pai"ramificação).
Na verdade, quando se verifica uma etiqueta, coloca - se em estado de cabeça isolado, o que significa que já não está em nenhuma sucursal. Acho que sim. o git poderia definir uma estrutura de dados que aponta para um commit por ramo, mas não o faz.Por isso, se quiser marcas de "versão x" em vários commits, então o que está a fazer (usando Convenções de nomes para manter várias marcas rectas) é o melhor que pode fazer. Mas eu também ecoaria os sentimentos daqueles que sugerem que as "etiquetas de lançamento em desenvolvimento" não são tão úteis como você poderia esperar.
Não. Lançamento da marca apenas emMarca Para lançamento no develop e no master branch
master
. Ramificação para desenvolvimento, é instável.
1 mapeamento de marcas com apenas 1 hash-string de commit, se um, dois ou mais ramos tiverem a hash-string de commit, a tag ficará neste(s) ramo (s).
As marcas Git e os ramos são noções extremamente leves, as únicas () ( apenas) modelo que você deve ter de um histórico git é o ancestral DAG e referências (tags, branches, o que você tem) para commits atualmente particulares nele.
Por que se preocupar em marcar um commit que você pode encontrar tão (mais, na verdade) confiavelmente sem a tag? Você está atrás do último commit que foi fundido do develop para v1. 6:
merge=`git rev-list v1.6 --grep="Merge branch 'develop'" --merges -1`
Vai conseguir a fusão, e
git log -1 $merge^2
Dar-te-á o commit fundido.