Você desenvolveu seu aplicativo concluiu a versão v1.0.
Após todos os commits no git, você marcou este ultimo commit com a tag v1.0 utilizando o comando:
git tag -a v1.0 -m "Versão v1.0"
E você continuou desenvolvendo novas funcionalidades no master enquanto seu cliente utiliza a versão v1.0.
Após alguns dias o seu cliente entra em contato dizendo que há um bug na sua aplicação e que precisa ser corrigido.
Mas você não quer ainda lançar a versão v2.0, em função de todas as funcionalidades desejadas para esta versão ainda não estarem concluidas.
Como você volta na versão v1.0 e faz a correção?
Primeiro você deve voltar a versão desejada, no caso a versão v1.0 com o seguinte comando:
git checkout v1.0
Só lembre de executar este comando em um diretorio que não contenha modificações a serem commitadas ainda, caso houver necessidade, utilize o stash para guardar as alterações que estavam em andamento para posteriormente voltar a versão v1.0
Feito isto, agora você está dentro da versão v1.0.
Crie um novo branch a partir da versão v1.0 com o comando:
git checkout -b bugfix v1.0
Ficando assim agora em um novo branch “bugfix” gerado a partir da versão v1.0.
Faça todas as alterações necessárias para correção do respectivo bug.
Após isto é só adicionar as alterações referente as correções e efetuar o commit com os comandos:
git add .
git commit -m "Finish bugfix"
Agora vamos gerar a versão v1.1 com as devidas correções utilizando o seguinte comando:
git tag -a v1.1 "Versão v1.1, bugfix"
Agora só falta fazer o merge para a linha principal de desenvolvimento, no caso o master, para estas correções já sairem nas próximas versões.
Vamos primeiro alterar para a branch master.
git checkout master
Vamos realizar o merge das correções da v1.1 com o master.
git merge v1.1
Caso ocorra conflitos, é só resolve-los e continuar o desenvolvimento na branch master.