O título da pergunta é sobre tags assinadas em um fluxo de trabalho de implantação, mas o que você está perguntando tem muito pouco a ver com as tags assinadas. E, na realidade, o único passo que seria diferente é a verificação das tags, e você já está fazendo isso.
git reset --hard HEAD
não limpará arquivos locais não rastreados, o que pode muito bem arruinar seu processo de criação. Depois de git reset --hard
você pode querer também executar git clean -d -x -f
.
git fetch
pode buscar várias ramificações, ou pode não buscar o que você espera que ela obtenha. Todas as ramificações buscadas serão adicionadas a .git/FETCH_HEAD
, para evitar surpresas ao usar o FETCH_HEAD
ref, recomendo buscar explicitamente seu ramo de lançamento. Algo como git fetch $remote $branch
.
Você está perguntando se existe uma maneira "melhor" de fazer isso, mas pessoalmente acho que isso é bom o suficiente. Se o seu objetivo é evitar a busca desnecessária, você pode jogar com a saída de git ls-remote
, mas não vale a pena o esforço.
Pessoalmente, para compilações reproduzíveis eu simplesmente começaria a compilação em um diretório limpo toda vez. dir=$(mktemp -d); cd $dir; git init; git remote add ...
e assim por diante. Dessa forma, você também pode mover facilmente esse script para uma máquina diferente. Para acelerar a busca inicial, você pode dizer ao diretório temporário para encontrar objetos git do diretório local permanente com um echo $permanent_git_directory/.git/objects > .git/objects/info/alternates
( man gitrepository-layout
para mais informações).