Git: Renomear o branch ‘master’

Digamos que seu projeto vai ganhar uma reescrita, uma refatoração pesada, atualização do framework (rails 2 para rails 3) ou qualquer coisa que vá mudar o rumo do seu código de forma revolucionária. Enfim, cria-se um novo branch e começa a brincadeira. Neste tempo, seu master continua com atualizações, com correções de bugs, novos features, enfim, sua aplicação ainda está viva. Quando terminado o processo de refatoração, o merge com o branch principal, normalmente o master, acaba sendo uma dor de cabeça e a opção adotada algumas vezes é tornar o branch de refactoring no branch principal. Para este caso, vou explicar como renomear o branch de refactoring para o master e, claro, guardar o master para poder fazer ‘a caça as bruxas’ depois. Vou usar como base que estamos atualizando a versão do Rails 2 para Rails 3.

1. Vá para um branch qualquer, se não tiver, crie um;

$ git branch temp
$ git checkout temp

2. Renomear o branch master para rails2;

$ git branch -m master rails2

3. Renomear o branch de rails3 para o master;

git branch -m rails3 master

4. Remover o branch master remoto;

$ git push origin :master

5. Criar o branch master no repositório remoto;

$ git push origin master:refs/heads/master

6. Criar o branch rails2 no reposotório remoto;

$ git push origin rails2:refs/heads/rails2

7. Remover o branch rails3 no repositório remoto;

$ git push origin :rails3

Pronto, teoricamente quando a galera fizer o git pull, pegará o novo branch, mas eu recomento que remova o branch master local de cada máquina e pegar novamente;

$ git branch temp
$ git checkout temp
$ git branch -d master
$ git checkout -b master origin/master

Fontes:
http://www.dmo.ca/blog/20080307124544/
http://www.kernel.org/pub/software/scm/git/docs/git-branch.html
http://www.kernel.org/pub/software/scm/git/docs/git-checkout.html
http://www.kernel.org/pub/software/scm/git/docs/git-push.html


como remover branch remoto no git

Esse post é mais para lembrete, pois muitas vezes esqueço como remover um branch remoto, enfim…

Tem o modo que é inesquecível, pelo menos para mim:

git push <repository> :<branch>

git push origin :old_branch_to_be_deleted

Mas caso você queira remover um branch que tenha o mesmo nome de uma TAG, temos a seguinte resposta de retorno:

$ git push origin :v0.2.1
error: dst refspec v0.2.1 matches more than one.
error: failed to push some refs to 'git@github.com:tinogomes/resque_spec.git'

Neste caso, ao invés de só usarmos o nome do branch, devemos usar o seu endereço de referência, no caso:

git push <repository> :refs/heads/<branch>

$ git push origin :refs/heads/v0.2.1

Referência: http://cheat.errtheblog.com/s/git


Como aplicar um patch de `git diff`

Criando o arquivo de patch

$ git diff > /tmp/arquivo.patch

Aplicando o patch

$ patch -p1 < /tmp/arquivo.patch

Baseado no post de Thomas Amsler sobre o assunto.


Seguir

Obtenha todo post novo entregue na sua caixa de entrada.

Join 602 other followers