Puxa para outro branch Git sem comutar

31

mudamos recentemente do SVN para o Git e, ao mesmo tempo, colocamos nossos sistemas ativos no controle de versão (em vez de fazer checkout local e cópia de arquivo para viver).

No projeto que eu estou atribuído a todos nós, acessamos o mesmo repositório e para obter mudanças no live, nós apenas git pull lá. Isso causa problemas porque nossos webdesigners enviam alterações para o VCS que ainda não devem estar ativas, mas devem estar no ambiente de testes da Web.

Quando um dos desenvolvedores agora entra em ação, ele obtém todas as alterações (possivelmente inacabadas).

Eu pensei em mudar ao vivo para um ramo extra e apenas mesclar o que mudou, mas devido à minha falta de conhecimento git eu não tenho idéia de como.

Minha ideia é:

  • Crie uma nova filial em ao vivo ( git branch live ).
  • Toda vez que algo tem que ir ao vivo
    • Puxe as alterações no mestre (como: git checkout master; git pull; git checkout live )
    • git merge master

O problema é que mudar para masterizar ou puxar tudo diretamente para o sistema live causaria problemas, então eu preferiria evitar isso.

Existe alguma maneira de fazer isso ou existe uma maneira melhor de gerenciar o sistema Live (exceto para treinar os webbies para não empurrar coisas inacabadas).

    
por Morfildur 13.07.2010 / 14:07

3 respostas

16

Você pode usar o git stash antes de verificar o mestre e puxando, e depois de verificar ao vivo novamente use git stash pop (ou se o seu git é mais antigo, git stash apply e git stash clear supondo que você não escondeu mais nada)

    
por 14.07.2010 / 12:09
4

Resolva o problema primeiro. Eles não devem estar empurrando para um ramo que não têm o que empurrar.

O que você parece estar perguntando seria algo como

git checkout live
git pull origin master

Isso tentará mesclar o mestre remoto e sua filial ativa.

    
por 13.07.2010 / 15:13
0

Eu recomendo que você crie um repositório git de teste para todos se comprometerem. Todos os repos, incluindo o seu site ao vivo, serão clones do repo de teste. Dessa maneira, qualquer pessoa pode fazer testes sem tocar no site ao vivo. Quando alguém precisa atualizar o site ao vivo, você pode acessar o site ao vivo do repositório de teste do git. Esse fluxo de trabalho é bastante semelhante ao SVN. Para maior flexibilidade, recomendo usar o ramo "ao vivo" que você descreve.

Para resumir, o repositório git de todos é um clone do repositório de testes. O site de produção ao vivo é apenas um clone do repositório de teste também. Alternativamente, o teste poderia ser um clone de produção ao vivo, de modo que um "impulso git" sempre se move em direção à produção.

Outras opções, incluindo a adição da ramificação "ativa" a esse acordo ou a inclusão de um repo de "teste" entre teste e produção. Para segurança extra, eu recomendo restringir o acesso ao repositório do live git e forçar as pessoas a usar um script seguro que faça a atração para a produção ao vivo.

    
por 24.07.2010 / 17:53

Tags