Sou muito novo no GIT / GitHub (tão novo quanto a partir de ontem). Gostaria de saber qual é a melhor maneira de gerenciar várias pessoas trabalhando no mesmo projeto com o Github. Atualmente, estou gerenciando um projeto com quatro desenvolvedores.
Como faço para executar o fluxo de trabalho e garantir que tudo esteja sincronizado?
(Nota: todos os desenvolvedores terão uma conta universal.)
Cada desenvolvedor precisa estar em uma ramificação diferente?
Serei capaz de lidar com duas pessoas trabalhando no mesmo arquivo?
Por favor, poste uma resposta detalhada, eu não sou um leitor tímido. Eu preciso entender isso bem.
Respostas:
Se todos os desenvolvedores tiverem acesso confirmado ao repositório, não será necessário fazer nada de especial. Eles puxam as mudanças do repositório, fazem suas próprias alterações, confirmam localmente e depois retornam ao repositório público quando têm algo funcionando.
Se, por outro lado, você tiver um (ou alguns) desenvolvedores responsáveis por se comprometer com o repo, e os outros estiverem fornecendo patches para eles. Faça com que cada um deles clone o repositório em suas próprias contas e envie solicitações de recebimento quando houver uma alteração desejada no repositório principal.
Também é possível criar clones específicos para trabalhar em recursos específicos, se desejar. Usando o mesmo fluxo de trabalho com solicitações pull para obter alterações no repositório principal quando o recurso estiver concluído.
Se por "Todos os desenvolvedores terão uma conta universal", você quer dizer que todos os desenvolvedores compartilharão uma conta do GitHub e aparecerão como o mesmo responsável pelo repo, isso é uma má idéia. Crie contas separadas e configure-as como colaboradores, se desejar que todas elas tenham acesso de confirmação.
Quanto às suas perguntas específicas:
Não, use branches para recursos, correções, etc, que levarão mais de um commit. Mais de um desenvolvedor pode estar trabalhando no mesmo ramo.
Sim, o git lida com conflitos muito bem, então não há problemas em ter pessoas trabalhando no mesmo arquivo. Sem problemas, exceto, a resolução de conflitos nem sempre pode ser trivial se houver alterações fundamentais em um arquivo que foi editado por mais de um membro. No entanto, isso não pode ser superado conversando juntos. O controle de versão não substitui a comunicação.
Boa sorte!
fonte
git fetch upstream
seguido porgit merge upstream/branch
você deve sincronizar sem reescrever o histórico de consolidação local. Se isso não for um problema, simplesmentegit pull --rebase
mova suas alterações locais não pressionadas para a parte superior da ramificação upstream.Trabalhamos com 2 desenvolvedores e usamos este fluxo de trabalho:
fonte
Vejo apenas respostas em texto aqui, então pensei em publicar uma foto de um bom gitflow para começar. Uma imagem descreve mais de mil palavras:
fonte
Eu trabalho com outros 3 desenvolvedores e lutamos bastante com isso. Às vezes, os desenvolvedores enviam commits para a produção que ainda não estão prontos para o horário nobre, porque eles inserem outros commits em suas alterações e depois enviam para a produção. As ramificações da versão parecem funcionar bem para nós. Portanto, se a versão 1.0 for a versão estável atual, criaremos um ramo para o v1.1-development. Os desenvolvedores farão alterações neste ramo. Nosso servidor de teste faz check-out dessa ramificação e realiza as alterações necessárias. Quando todos os recursos da v1.1 estiverem prontos e o teste estiver concluído, mesclaremos a v1.1 com master e push. Com filiais, a equipe de desenvolvedores A pode trabalhar na v1.1 e a equipe de desenvolvedores B pode trabalhar com a v1.2. Ambas as equipes podem trabalhar sem se impactar. Se a equipe A desenvolver algo que B possa usar,
Também usamos um ramo de hotfix usado para alterações imediatas.
Aqui está um link para uma imagem de como isso se parece. http://nvie.com/img/[email protected]
fonte