Como desenvolvedor único (por enquanto), como devo usar o Git? [fechadas]

54

Eu tenho vários projetos no Git que eu eventualmente quero trazer outros. No entanto, neste momento sou apenas eu e uso o Git e o GitHub de maneira muito simples: sem ramificações e basicamente usando apenas os commits como backup para meus arquivos locais. Às vezes, volto e vejo as versões anteriores dos meus arquivos para referência, mas não precisei fazer nenhuma reversão até este ponto, embora aprecie a opção caso precise dela no futuro.

Como um único desenvolvedor, quais recursos do Git ou do GitHub eu poderia tirar proveito disso me beneficiariam agora? Como deve ser meu fluxo de trabalho?

Além disso, existem práticas específicas que eu preciso começar a fazer antes de adicionar outras pessoas aos meus projetos no futuro?

    
por VirtuosiMedia 13.10.2011 / 22:55
fonte

4 respostas

58

Also, are there any particular practices that I need to start doing in anticipation of adding others to my projects in the future?

Claro. Há uma boa prática simples que você pode usar mesmo se você não tiver uma equipe agora: crie uma ramificação separada para desenvolvimento. A ideia é que o branch master conterá apenas versões de código liberadas ou grandes mudanças. Isso pode ser facilmente adotado por novos desenvolvedores que participam do seu projeto.

Além disso, a ramificação é útil mesmo se você estiver trabalhando sozinho. Por exemplo, você encontra um bug durante o processo de codificação de um novo recurso. Se você não usa branches, você terá que fazer as duas coisas: adicionar novos recursos e corrigir o bug na mesma ramificação. Isso não é bom: P Por outro lado, se você criou uma nova ramificação para criar seu novo recurso, basta fazer o checkout da ramificação de desenvolvimento, corrigir o bug e efetuar o checkout da nova ramificação de recurso.

Este é apenas um breve exemplo do que você pode fazer como único programador. Tenho certeza de que deve haver mais boas práticas.

Eu recomendo strongmente este artigo: Um modelo de ramificação do Git bem-sucedido

    
por 13.10.2011 / 23:27
fonte
13

Estou exatamente nessa situação, mas optei por um fluxo de trabalho um pouco mais complexo, embora não necessariamente mais complicado, com o Git.

O objetivo em primeiro lugar foi aprender o caminho certo, então eu explorei um pouco. em seguida, reverteu para praticamente o fluxo de trabalho que você descreveu.

Depois de um tempo isso se tornou difícil de trabalhar, pois algumas situações surgiram também me deu maus hábitos que seriam difíceis de quebrar quando eu me juntasse a um time.

então resolvi o seguinte:

  • Repositório local para trabalhar.
  • Filial principal como um tronco estável para o aplicativo
  • Um ramo para cada recurso / refatorador, basicamente um ramo para cada alteração considerável que será feita.
  • Mesclar de volta ao tronco quando a ramificação estiver estável e todos os testes passarem.

Eu também configuro uma conta do hub git onde sincronizo o tronco. Isso me permitiu começar a trabalhar facilmente em computadores diferentes. Foi por necessidade, mas permitiu-me encontrar bugs que estavam ligados ao ambiente que eu estava em que não estava disponível nos outros computadores. Então agora eu tenho o hábito de tentar um projeto em um sistema "virgem" diferente pelo menos uma vez. Me poupa muitas dores de cabeça quando chega a hora de implantar para o cliente.

  • Eu marquei todas as versões que fazem isso no github como uma versão liberável.
  • Se liberado para o cliente, ramificará desta versão para criar um segundo tronco estável para correções de bugs declaradas pelo cliente.

Os vários ramos no início pareciam um exagero, mas realmente ajudou muito. Eu poderia começar uma ideia em um ramo, trabalhar nela por um tempo e quando eu começar a rodar círculos eu desisti e comecei outro ramo para trabalhar em outra coisa. Mais tarde, surgiu uma ideia em que eu voltava para o ramo meio assado e explorava essa ideia. No geral, isso me tornou MUITO mais produtivo, já que eu conseguia fazer flashes e idéias muito rapidamente e ver se funcionava. O custo de trocar de agências com o GIT é extremamente baixo, o que me torna muito ágil com minha base de código. Dito isso eu ainda tenho que dominar o conceito rebase para limpar a minha história, mas desde que eu estou sozinho eu duvido que eu realmente precise. Empurrou como "bom aprender".

Quando toda a ramificação se tornou complicada, explorei a opção de log para desenhar uma árvore de alterações e ver em qual ramificação está o local.

Longa história curta, git não é como SVN, CVS ou (brrr) TFS. A ramificação é muito barata e cometer erros que acabam com o trabalho é realmente muito difícil. Apenas uma vez eu perdi algum trabalho e foi porque eu fiz meus commits muito grandes (veja os maus hábitos acima). Se você cometer muitas vezes, por pequenos pedaços, definitivamente será seu melhor aliado.

Para mim, abri minha mente para o que realmente é o controle de origem. Qualquer outra coisa antes era apenas tentativas de consegui-lo, git é o primeiro, que na minha mente, entendi. Dito isto, eu não tentei outros DVCS, possivelmente essa declaração poderia ser ampliada para toda a família.

Um último conselho, a linha de comando é seu amigo. Não quer dizer que as ferramentas gráficas não são boas, muito pelo contrário, mas eu realmente geei git quando caí na linha de comando e tentei por mim mesmo. É realmente muito bem feito, fácil de seguir com um sistema de ajuda muito abrangente. Meu maior problema estava sendo amarrado ao console, mas feio no Windows até que eu encontrei alternativas.

Agora eu uso os dois, integração do Eclipse com o Git para ver o que está acontecendo em tempo real e fazer algumas operações como diffs, explorar histórico para um arquivo, etc. E linha de comando para ramificação, fusão, envio, obtenção e mais árvores de toras complexas. alguns scripts básicos e eu nunca fui tão produtivo no que diz respeito ao controle de fonte e nunca tive tanto controle sobre minha fonte.

Boa sorte, esperamos que isso tenha ajudado.

    
por 14.10.2011 / 04:01
fonte
4

Sou bem versado em vários modelos de ramificação sofisticados e uso alguns no trabalho. No entanto, quando trabalho sozinho em projetos, faço exatamente o que você está fazendo agora. Eu sempre posso criar um ramo depois do fato se eu precisar de um, mas quase nunca o faço. Trabalhando sozinho, raramente tenho correções de bugs que não podem esperar até que minha tarefa atual seja concluída. Meu conselho é estar familiarizado com alguns modelos de ramificação, mas não faz sentido complicar as coisas até que você precise.

    
por 14.10.2011 / 01:58
fonte
2

Para um modelo mais simples, você pode ver o que o GitHub faz. "Fluxo do GitHub" é muito simples e há um excelente guia aqui: link

Resumo (do blog de Scott Chacon ):

So, what is GitHub Flow?

  • Anything in the master branch is deployable
  • To work on something new, create a descriptively named branch off of master (ie: new-oauth2-scopes)
  • Commit to that branch locally and regularly push your work to the same named branch on the server
  • When you need feedback or help, or you think the branch is ready for merging, open a pull request
  • After someone else has reviewed and signed off on the feature, you can merge it into master
  • Once it is merged and pushed to ‘master’, you can and should deploy immediately
    
por 07.08.2014 / 13:22
fonte