Notas introdutórias necessárias:
- Leia, repita e entenda o artigo sobre git . Isso ajudará a garantir que tudo já esteja configurado e pronto para uso.
- Instale o IntelliJ IDEA.
- Reserve uma hora de tempo pessoal para absorção completa.
Clone o projeto localmente
Existem duas opções aqui.- Se você já tem uma conta no Github e deseja enviar algo mais tarde, é melhor fazer um fork do projeto para você mesmo e clonar sua cópia. Como fazer uma bifurcação - descrevi neste artigo no capítulo um exemplo de fluxo de trabalho de bifurcação .
- Clone do meu repositório e faça tudo localmente, sem a capacidade de enviar tudo para o servidor. Afinal, este será meu repositório))
-
Copie o endereço do projeto:
-
Abra o Intellij IDEA e selecione Obter do controle de versão:
-
Copie e cole o endereço no projeto:
-
Você será solicitado a criar um projeto Intellij IDEA. Aceitamos a oferta:
-
Como não há sistema de compilação e este não é o escopo do artigo, selecione Criar projeto a partir de fontes existentes :
-
A seguir haverá uma pintura a óleo como esta: Já resolvemos a clonagem, agora podemos dar uma olhada.
Primeiro, observe o Intellij IDEA como uma UI Git
Dê uma outra olhada no projeto clonado: já lá você pode obter muitas informações sobre o sistema de controle de versão. O primeiro é o painel de controle de versão no canto esquerdo inferior. Nele você pode encontrar todas as alterações locais e obter uma lista de commits (análogo ao git log). Vamos passar para a palestra Log . Existe um certo componente visual que ajuda a entender exatamente como foi o processo de desenvolvimento. Por exemplo, você pode ver que um novo branch foi criado com um cabeçalho adicionado de commit ao txt , que foi então mesclado no branch master. Se você clicar em um commit, no canto direito você poderá ver todas as informações sobre o commit: todas as alterações e seus metadados. Além disso, você pode ver quais alterações foram feitas. Além disso, o conflito foi resolvido lá. IDEA também mostra isso perfeitamente. Se você clicar duas vezes no arquivo que foi alterado durante este commit, veremos como o conflito foi resolvido: É perceptível que à direita e à esquerda havia duas versões do mesmo arquivo que precisavam ser mescladas em uma. E no meio está o resultado final. Quando um projeto possui muitas ramificações, commits e usuários que trabalham no projeto, você precisa pesquisar separadamente por branch (branch), usuário (usuário) e data (data): E a última coisa que quero explicar antes de começar é como entender em qual ramo estamos. Vou te dar um minuto para pesquisar... você encontrou? Você está desistindo? :D No canto inferior direito há um botão Git: master , onde depois de Git: mostra em qual branch o projeto está atualmente. Se você clicar no botão, poderá fazer muitas coisas úteis: mudar para outro branch, criar um novo, renomear um existente e assim por diante.Trabalhando com o repositório
Teclas de atalho úteis
Para continuar trabalhando, você precisa se lembrar de algumas teclas de atalho muito úteis:- ctrl + t - obtém as alterações mais recentes de um repositório remoto (git pull).
- ctrl + k - confirma/visualiza todas as alterações disponíveis no momento. Isso inclui arquivos não rastreados e modificados (veja meu artigo sobre git, isso está descrito lá) (git commit).
- ctrl + shift + k é um comando para enviar alterações para um repositório remoto. Todos os commits que foram criados localmente e ainda não estão no remoto serão oferecidos para push (git push).
- alt + ctrl + z - reverte as alterações em um arquivo específico para o estado do último commit criado no repositório local. Se você selecionar o projeto inteiro no canto superior esquerdo, poderá reverter as alterações em todos os arquivos.
O que queremos?
Para funcionar, precisamos dominar o script básico, que é usado em todos os lugares. A tarefa é implementar a nova funcionalidade em um branch separado e enviá-la para um repositório remoto (então você precisa criar outra solicitação pull para o branch principal, mas isso está além do escopo do nosso artigo). O que eu preciso fazer?-
Obtenha todas as alterações atualmente no branch principal (master, por exemplo).
-
Com base neste principal, crie um separado para o seu trabalho.
-
Implemente novas funcionalidades.
-
Vá para o branch principal e verifique se houve alguma alteração enquanto você trabalhava. Se não foi, então está tudo bem, e se foi, então fazemos o seguinte: vamos para o branch de trabalho e rebaseamos as alterações do branch principal para o nosso. Se tudo correu bem, ótimo. Mas pode muito bem haver conflitos. E podem ser resolvidos antecipadamente, sem perder tempo em um repositório remoto.
Ao que parece, por que fazer isso? Esta é uma regra de boa forma, que evita que surjam conflitos após enviar sua branch para o repositório local (há, claro, uma probabilidade de que eles ainda existam, mas ela se torna muito menor).
- Envie suas alterações para um repositório remoto.
Receber alterações de um servidor remoto?
Adicionei uma descrição ao README com um novo commit e quero receber essas alterações. É oferecida uma escolha entre mesclagem e rebase se alterações forem feitas nos repositórios locais e remotos. Selecione uma mesclagem. Digite ctrl + t : Como resultado, você pode ver como o README mudou, ou seja, as alterações do repositório remoto foram acessadas e no canto inferior direito você pode ver todos os detalhes das alterações que vieram do servidor.Crie um novo branch baseado no master
Tudo é simples aqui.-
Vá para o canto inferior direito e clique em Git: master , selecione + New Branch .
Deixe a caixa de seleção da filial do Checkout e escreva o nome da nova filial. Para mim seria readme-improver .
Depois disso, Git: master mudará para Git: readme-improver .
Simulando trabalho paralelo
Para que conflitos apareçam, alguém deve criá-los :D Vou editar o README com um novo commit através do navegador e assim simular um trabalho paralelo. Dizem que alguém, durante meu trabalho, fez alterações no mesmo arquivo que eu, o que gerará um conflito. Retirarei a palavra “inteiramente” da linha 10.Implemente sua funcionalidade
A tarefa é alterar o README e adicionar uma descrição ao novo artigo, ou seja, o trabalho no git é feito através do Intellij IDEA. Adicione isto: As alterações foram concluídas, agora você pode criar um commit. Pressione a tecla de atalho ctrl + k , obtemos: Antes de criar um commit, você precisa observar cuidadosamente o que é oferecido nesta janela. Eu adicionei especificamente uma seta para mostrar onde procurar. Há muitas coisas interessantes lá. Na seção Mensagem de commit escrevemos o texto do commit, e para que ele seja criado é necessário clicar no botão Commit . Ainda não descobri como fazer isso com tecla de atalho, então se alguém encontrar, escreva, ficarei muito feliz. Escrevemos que o README mudou e criamos um commit. Como resultado, um alerta aparecerá no canto inferior esquerdo com o nome do commit:Verifique se o branch master mudou
Concluímos a tarefa, funciona, escrevemos os testes, está tudo bem. Mas antes de enviar para o servidor, você precisa verificar se houve alguma alteração na ramificação principal durante esse período. Como isso pôde acontecer? É muito simples: alguém recebeu uma tarefa depois de você, e esse alguém a fez mais rápido que você. Portanto, passamos para o branch master. Para fazer isso, você precisa fazer no canto inferior direito o que é mostrado na figura abaixo: No branch master, pressione ctrl + t para obter as últimas alterações do servidor remoto. Se você observar quais alterações foram feitas, poderá perceber facilmente o que aconteceu: como você pode ver, a palavra “completamente” foi removida. Talvez tenha sido alguém do marketing que decidiu que não poderia ser escrito assim e deu aos desenvolvedores a tarefa de atualizá-lo. Agora temos a versão mais recente do branch master localmente. Vamos voltar ao readme-improver . Agora precisamos rebasear as alterações do branch master para o nosso. Nós fazemos: Se você seguiu tudo corretamente comigo, o resultado deverá ser um conflito no arquivo README: Também há muitas informações aqui que precisam ser compreendidas e absorvidas. Isso mostra uma lista (no nosso caso de um elemento) de arquivos que apresentam conflitos. Podemos escolher três opções:- aceite o seu - aceite apenas as alterações do readme-improver.
- aceite as deles - aceite apenas alterações do mestre.
- mesclar - escolha você mesmo o que manter e o que remover.
- Estas são alterações do readme-melhorador.
- Resultado. Por enquanto é o mesmo que era antes das mudanças.
- Mudanças do branch master.
GO TO FULL VERSION