Leia git em um artigo

No trabalho diário, as operações Git são frequentemente usadas. Mas, para os recém-chegados, eu era novo no Git quando vim pela primeira vez, e a operação também era muito estranha. Este artigo é voltado principalmente para iniciantes que estão apenas começando a entrar em contato com o Git, entender os princípios básicos do Git e dominar alguns comandos comumente usados.

Um, fluxo de trabalho Git

 

O acima inclui alguns comandos simples e comumente usados, mas não se preocupe com eles primeiro, vamos primeiro entender os seguintes 4 nomes próprios.

  • Espaço de trabalho: espaço de trabalho

  • Índice / Estágio: Área de armazenamento temporário

  • Repositório: área do armazém (ou armazém local)

  • Remoto: armazém remoto

Área de trabalho

As alterações de desenvolvimento feitas pelos programadores são o que você vê atualmente e também são as mais recentes.

Normalmente, nosso desenvolvimento consiste em copiar uma filial em um warehouse remoto e desenvolver com base nessa filial. No processo de desenvolvimento está o funcionamento do espaço de trabalho.

cache de armazenamento

No arquivo de índice sob o diretório .git, a área de armazenamento temporário registrará git addas informações relevantes (nome do arquivo, tamanho, carimbo de data / hora ...) do arquivo adicionado, sem salvar a entidade do arquivo e apontando para cada entidade do arquivo por id. Você pode usar para git statusver o status da área de preparação. A área de teste marca qual conteúdo em seu espaço de trabalho atual é gerenciado pelo git.

Quando você precisa enviar para um warehouse remoto após concluir um determinado requisito ou função, a primeira etapa git adddeve ser gerenciada pelo git , enviando-o primeiro para a área de teste.

Armazém local

Salve as versões enviadas do objeto, que são mais antigas que o conteúdo da área de trabalho e da área de armazenamento temporário.

git commitDepois de sincronizar a árvore de índice com o warehouse local, é conveniente git pushsincronizar o warehouse local com o warehouse remoto a partir da próxima etapa .

Armazém remoto

O conteúdo de um armazém remoto pode ser modificado por armazéns locais em um relacionamento colaborativo distribuído em vários locais, portanto, pode ou não ser sincronizado com o armazém local, mas seu conteúdo é o mais antigo.

resumo

  1. Qualquer objeto nasce e é modificado no espaço de trabalho;

  2. Qualquer modificação é controlada por versão após entrar na área de índice;

  3. Somente ao enviar a modificação ao warehouse local, a modificação pode deixar um rastro no warehouse;

  4. Compartilhe as alterações locais com os colaboradores e envie-as a depósitos remotos para compartilhamento.

A figura a seguir explica mais diretamente a relação entre as quatro áreas, alguns comandos podem não ser claros, não importa, a próxima parte apresentará em detalhes.

 

Dois comandos Git comumente usados

 

Encontrei uma imagem na Internet, e uma imagem compilada por outra pessoa é muito boa e eu a peguei emprestada para usar. Alguns comandos comuns são explicados em detalhes abaixo.

CABEÇA

 

Antes de entender os comandos específicos, entenda primeiro o HEAD.

HEAD, ele sempre aponta para o último ponto de confirmação do branch atual. Se o branch em que você está muda, ou um novo ponto de confirmação é gerado, o HEAD mudará de acordo.

adicionar

Os comandos relacionados ao add são muito simples e, principalmente, percebem que o conteúdo modificado do espaço de trabalho é submetido à área de armazenamento temporário e gerenciado pelo git.

git add. Adicione todos os arquivos do diretório atual à área de armazenamento temporário
git add <dir> Adicione o diretório especificado à área de armazenamento temporário, incluindo subdiretórios
git add <file1> Adicione o arquivo especificado à área de teste

comprometer

Os comandos relacionados ao commit também são muito simples.Eles implementam principalmente o envio do conteúdo da área de armazenamento temporário ao warehouse local e fazem o HEAD do branch atual retroceder um ponto de commit.

git commit -m <message> Envie a área de armazenamento temporário para o armazém local, e a mensagem representa a informação
git commit <file1> -m <message> Envie os arquivos especificados na área de armazenamento temporário para o armazém local
git commit --amend -m <message> Use um novo commit para substituir o commit anterior

ramo

Quando se trata de colaboração, as ramificações estão naturalmente envolvidas.A respeito das ramificações, provavelmente há quatro operações: exibir ramificações, alternar ramificações, criar ramificações e excluir ramificações.

ramo git Liste todas as filiais locais
git branch -r Listar todas as filiais remotas
git branch -a Liste todas as filiais locais e remotas
branch do git <branch-name> Crie uma nova ramificação, mas ainda permaneça na ramificação atual
git checkout -b <branch-name> Crie um novo branch e mude para aquele branch
branch git --track <branch> <remote-branch> Crie uma nova filial e estabeleça uma relação de rastreamento com a filial remota especificada
git checkout <branch-name> Mudar para o branch especificado e atualizar o espaço de trabalho
git branch -d <branch-name> Excluir ramo
git push origin --delete <branch-name> Excluir filial remota

Embora haja muitas operações em filiais, elas são relativamente simples e fáceis de lembrar.

fundir

O comando merge mescla diferentes ramos. Conforme mostrado na figura acima, na abertura real, podemos cortar um branch do branch master e, em seguida, desenvolver para completar os requisitos. No meio, os registros de commit de R3, R4, R5 são passados ​​e, finalmente, o desenvolvimento é concluído e precisa ser mesclado no master. Isso usa mesclagem .

git fetch <remote> Extraia o código mais recente do armazém remoto antes de mesclar
git merge <branch> Mesclar o branch especificado com o branch atual

Geralmente, o conflito aparecerá após a fusão e você precisa resolvê-lo manualmente em resposta ao conflito. Principalmente porque dois usuários modificaram a mesma área do mesmo arquivo. Conforme mostrado na figura abaixo, ele precisa ser liberado manualmente.

rebase

 

Rebase, também conhecido como rebase, é outra opção para mesclar.

No início, estamos no novo branch e executamos git rebase dev, então os novos commits no novo branch são repetidos no branch master e, finalmente, o checkout volta para o novo branch. É o mesmo que mesclar. O branch antes e depois da mesclagem não mudou. git rebase dev, A explicação popular é que o novo ramo quer se apoiar no dev para continuar. Rebase também requer resolução de conflito manual.

A diferença entre rebase e mesclagem

Agora temos esses dois ramos, teste e mestre, apresentados da seguinte forma:

  •  
  •  
  •  
      D---E test     /A---B---C---F master
 

Execute no mestre git merge test, e então você obterá os seguintes resultados:

  •  
  •  
  •  
      D--------E     /          \A---B---C---F----G   test, master

 

Execute no mestre git rebase teste obtenha os seguintes resultados:

  •  
A---B---D---E---C'---F'   test, master

Como você pode ver, a operação de mesclagem gerará um novo nó e os envios anteriores serão exibidos separadamente. A operação de rebase não gera novos nós, mas mescla as duas ramificações em uma submissão linear.

Se você quer uma árvore de histórico linear limpa sem merge commit, então você deve escolher git rebase.
Se você quiser manter um histórico completo e evitar o risco de reescrever o histórico de commit, você deve escolher usar git merge

Redefinir

O comando reset aponta a ramificação atual para outro local e altera a área de trabalho e a área de armazenamento temporário de acordo.

git reset —soft <commit> Apenas o ponto de confirmação é alterado e o conteúdo da área de armazenamento temporário e o diretório de trabalho não são alterados
git reset —mix <commit> Altere o ponto de confirmação e altere o conteúdo da área de armazenamento temporário ao mesmo tempo
git reset —hard <commit> O conteúdo da área de armazenamento temporário e da área de trabalho será modificado para o estado exatamente igual ao do ponto de envio
git reset --hard HEAD Retorne a área de trabalho ao estado em que estava quando foi enviada pela última vez

reverter

git revert usa um novo commit para eliminar quaisquer mudanças feitas por um commit histórico.

A diferença entre reverter e redefinir

  • Git revert usa um novo commit para reverter o commit anterior, e git reset exclui diretamente o commit especificado.

  • Olhando para a operação de reversão, o efeito é semelhante. Mas há uma diferença quando você continua a mesclar a versão antiga no futuro. Como o git revert usa um commit reverso para "neutralizar" o envio anterior, quando o branch antigo for mesclado no futuro, esta parte da mudança não aparecerá novamente, reduzindo os conflitos. No entanto, git reset deleta alguns commits em um certo branch, então quando ele se funde com o branch antigo novamente, estes commits revertidos ainda devem ser introduzidos, causando muitos conflitos. Sobre este ponto, você pode ler este artigo se não entender.

  • Git reset move o HEAD um pouco para trás, enquanto git revert move o HEAD para frente, mas o conteúdo do novo commit é o oposto do conteúdo a ser revertido, o que pode compensar o conteúdo a ser revertido.

empurrar

Faça upload da filial do warehouse local para a filial do warehouse remoto para sincronização.

git push <remote> <branch> Carregue a filial local designada para o armazém remoto
git push <remote> --force Empurre forçosamente a filial atual para o armazém remoto, mesmo se houver um conflito
git push <remote> --all Empurre todas as filiais para o armazém remoto

Outros comandos

git status Mostrar arquivos alterados
git log Mostra o histórico da versão do ramo atual
git diff Mostra a diferença entre a área de preparação e a área de trabalho
git diff HEAD Mostra a diferença entre o espaço de trabalho e o último commit do branch atual
git cherry-pick <commit> Escolha um commit e mescle no branch atual

Acima estão alguns comandos comuns e explicações detalhadas sobre o Git. Acredito que posso ter uma compreensão preliminar do Git.

Acho que você gosta

Origin blog.csdn.net/suifeng629/article/details/106998428
Recomendado
Clasificación