Detalhes do Git para mim mesmo

Ele referiu-se a seguir, outros blogue, muito bem escrito, coleções aqui, para facilitar a visualização mais tarde

 

Se você quiser usar rapidamente Git, posso referir a outro post, não são comuns resumo Git comandos

 

Git é o quê?

Git é um recipientes de código de gerenciamento distribuído, tanto espera local e remota por um mesmo código. repositório Git é composta principalmente de três partes: o cache de código nativo, cometer história, esta é a essência de quase todas as operações, mas para o artigo mais simples, não em torno isso começou, interessado pode ir para encontrar o próximo . Direto ao ponto, o que dirigi-lo disse que as operações comuns têm Git.

Git tem o que as operações normais?

Nós simplesmente temos de falar sobre o que a operação normal Git, nos permitem lidar com as necessidades de desenvolvimento simples.

clone de código

Clonagem códigos distais ✦

git clone + 远程库地址

✦ Verifique estados de código local

// 可以明确的呈现出本地仓库的状态
// 哪些文件发生改动,哪些文件已经提交到本机
// 以及一些操作指示。
git status

 

✦ mudança filial remota síncrona

// 拉取指定分支的变化
git fetch origin master 
// 拉取所有分支的变化
git fetch 
// 拉取所有分支的变化,并且将远端不存在的分支同步移除【推荐】
git fetch -p

✦ finais alterações de código de sincronização distal.

// 都是先 git fetch,然后执行合并操作
// 不同的是,git pull 执行的是 git merge,git pull -r 执行的是git rebase
git pull origin master 
git pull -r origin master

Sobre rebase git merge e git suas respectivas vantagens e desvantagens, será detalhado mais tarde.

Esta secção descreve a operação em relação ao clone relacionado código, a extremidade distal da alteração de código de sincronização. Em seguida, olhamos para algumas operações no código nativo.

operando cometer

Primeiro temos que limpar um conceito: que cada commit é um estado de código completo, com um commitID ser o único sinal.

 

De uma certa perspectiva, o Git é manter uma árvore commitID, respectivamente detém código sob condições diferentes. Portanto, o seu médico sobre quaisquer alterações no código e, finalmente, será refletido a cometê-lo.

✦ New cometer

// 添加文件到缓存区,然后提交到本地仓库
git add files
git commit -m '提交备注'

✦ revogação cometer

// 会将提交记录回滚,代码不回滚
git reset b14bb52

// 会将提交记录和代码全部回滚
git reset --hard b14bb52

// 将部分代码文件回滚
git checkout -- files

O código de fusão combinado combinado ✦ cometer cometer, essencialmente em dois estados diferentes.

// Git 提供了两种合并 commit 的方式
git merge master
git rebase master

Então rebase git merge e git no final o que diferença isso faz? mesclar dois ramos após o conflito, adicionar um commit anexado ao mestre. rebase é cometer em someFeature registros de anexação ramificação para o ramo principal, vale a pena notar que, desta vez ele realmente cometer mudanças têm ocorrido.

 

Relativamente falando, conflito de mesclagem git mais diretamente, e rebase git commit para garantir um registro claro.

Mesclar comprometer, eles geralmente conflito. Você pode procurar por caracteres especiais, como global <<<, a posição do código a ser processado, em seguida, uma análise cuidadosa do que parte do código deve ser mantido.

 

Quando o trabalho em equipe, o ramo é essencial. Então, como deve o ramo para operá-lo?

ramo operação

O chamado ramo é realmente um ponteiro apontando commitID, você pode ir .git/refs/headspara baixo e ver.

 

Em circunstâncias normais, recomendamos pelo menos um ramo pode ser claramente identificados nome da função, se o usuário pode marcar o melhor, por exemplo qixiu/feature.

✦ Ver ramo

 

Pode ver tanto ramo ramo local e remoto, surgiu com a introdução do texto git fetch -ppode ser o primeiro a ver a mais recente informação de agências.

✦ nova filial local é realmente criar um ponteiro para um determinado commitID.

// git branch qixiu/feature + git checkout qixiu/feature
// 从当前分支新增一个新的分支qixiu/feature
// 一般情况下,我们应该从master或者其他稳定分支来新增分支
git checkout -b qixiu/feature // 新建分支
git checkout qixiu/feature // 切换分支

✦ Eliminar para remover uma filial local é realmente apontando ponteiro commitID.

// 删除本地分支,如果本地还有未合并的代码,则不能删除
git branch -d qixiu/feature
// 强制删除本地分支
git branch -D qixiu/feature

✦ Adicionando filial remota Normalmente, somos uma nova filial local, e, em seguida, atualizar a um caminho remoto para adicionar uma filial remota

git push origin qixiu/feature

✦ excluir filial remota Da mesma forma, também estamos atualizando a um caminho remoto para excluir uma filial remota

// 等同于git push origin -d qixiu/feaure
git push origin :qixiu/feature

resumo simples do que

Ele diz que pode haver algumas espalhadas aqui resumir o que operações mais frequentes são:

git status // 查看本地代码状态
git add files // 添加代码到缓存区
git commit -m '提交内容的备注' // 提交代码到本地仓库
git checkout -b branchName // 不加-b就是普通切换分支
git fetch -p // 同步远端分支状态
git pull -r origin branchName // fetch远端代码到本地,并且以rebase的方式合并代码
git push origin branchName // 更新本地代码到远端

Mais do que alguns têm sido capazes de atender o comando diário da operação, depois de cenários um pouco mais complexo irá introduzir texto

Com base na operação básica, o projeto real, como devemos usá-lo para a colaboração Git?

Que boas práticas têm Git?

Git tem alguns processos de desenvolvimento maduros, mais mainstream de duas maneiras: com base no ramo funcional do processo de desenvolvimento  e  processo de desenvolvimento GitFlow . Em relação ao, eu recomendo o primeiro, se é projetos grandes e complexos, recomendamos processo de desenvolvimento GitFlow. Em seguida, uma breve introdução destes dois modo cooperativo.

Ramos especiais baseadas em modelos de colaboração

processo de desenvolvimento baseado na função de ramificação é, na verdade, uma palavra: com um ramo de transportar desenvolvimento funcional, após o fim do desenvolvimento irá ser incorporado no ramo principal. Sua vantagem é a capacidade de garantir branch master limpa, mas também permitir ramificação lógica de código focado, mas também fácil codereview.

convenção de nomenclatura ramo

Recomendamos usar o seguinte formato: ownerName / FeatureName. Isso não só é fácil saber a função de cobertura ramo, também fácil de encontrar a pessoa encarregada do ramo. Após o tempo de limpeza é também ramo muito conveniente.

Processo de desenvolvimento

✦ Do mestre cortar um novo ramo

git checkout -b qixiu/newFeature

✦ desenvolver algumas novas funcionalidades, e em seguida, apresentar uma proposta vezes submetidos mais código de frequência para o repositório local para permitir mais flexível para salvar ou alterações de desfazer. Além disso, a fim de garantir uma clara cometer log, as notas propostas notas claras.

git status
git add files // 挑选需要提交的文件,或者全部提交
git commit -m '提交备注'
git push origin qixiu/newFeature

Se a função ✦ desenvolvido, pode dar início a um processo de codereview ✦ Se o código por meio de testes, mestre incorporado, em seguida, preparado na linha

// 冗余版 合并到 master
git checkout master 
git pull -r origin master
git checkout qixiu/newFeature
git rebase master // 处理冲突
git checkout master
git merge qixiu/newFeature
git push origin master

// 精简版 合并到 master
git checkout qixiu/newFeature
git pull -r origin master // 将master的代码更新下来,并且rebase处理冲突
git push origin master // 将本地代码更新到远端

Há vários pontos a serem observados: não dominar código de fusão, é importante para garantir o mestre disponibilidade. Certifique-se que a operação adequada do ramo direito. Quer se trate de lidar com conflitos ou atualização distal o código, guarde temor.

Este, um processo de desenvolvimento normal com base em função ramo é completa. Então dê uma olhada em outro processo de desenvolvimento.

processo de desenvolvimento GitFlow

GitFlow do que anteriormente falou sobre o processo de desenvolvimento baseado no ramo funcional é muito mais complexa, é mais adequado para projetos grandes e complexos. Ele projeta em todo o processo de publicação define um modelo ramo estrito, todos os processos de desenvolvimento são realizadas em torno do modelo ramo rigoroso. E este modelo é o papel de cada ramo da convenção, e como eles se comunicam.

Vamos dar uma olhada em processo de desenvolvimento GitFlow em várias convenções do ramo, bem como o papel do respectivo compromisso é tipo de como?

 

✦ branch master: meios para armazenar versão online do código, o código pode facilitar a versão do jogo. ✦ Desenvolver ramos: para ramos recurso de integração. ✦ Ramos especiais: uma função ramo, cortados a partir Desenvolver ramo, e função de tempo completo e integrado de volta para Desenvolver ramo, o ramo não diretamente interagem com e Mestre. ramos ✦ Lançamento: a iteração geralmente correspondente. Depois de uma versão combinada de todas as funções para desenvolver ramos, cortados a partir de um ramo lançamento Develop. Este ramo não é adicionado aos novos requisitos, correções de bugs pode ser concluída, documentos de trabalho perfeitos. Tenha em mente que a liberação do código, você precisa ser incorporado ao ramo principal, mas também se fundem para Desenvolver ramo. ✦ Hotfix ramos: ramo de reparação de emergência é o único galho cortado o Mestre, uma vez reparado pode ser incorporada no ramo principal e ramo Develop.

Como pode ser visto a partir de todas as funções do ramo e convenções, que processa mais de multi-restrição, não é adequado para aplicações de pequena escala. Claro, existem algumas ajudas GitFlow  gitflow  pode automatizar estas tarefas, para grandes projetos também é útil.

Falando na frente de que há operações básicas Git, então introduzidas no fluxo de trabalho de dois mainstream. Em seguida, olhar para Git que especial habilidades vale a pena mencionar.

dicas Git que?

operação de gestão de código Git além das funções básicas, existem algumas dicas que você pode fazer-se.

reflog git, vista Atividade

Eu tenho que colocar esta primeira apresentação, porque tinha várias vezes salvou o meu código

 

Cuidadosamente mapa fantasia, ficha reflog todas as suas operações de comando git, para alguns cenários de recuperação inexplicáveis ​​ou uso indevido de reversão de grande ajuda.

Imagine um cenário: Você usa  git reset --hard commitID o código de desenvolvimento local para reverter para uma versão anterior, mas não foi empurrado até o final, como voltar o código perdido? Se você usar vista log git commit registros, e descartar aqueles que não podem voltar commitID. O reflog git mas registros detalhados de cada operação commitID você pode facilmente fazer o seu tempo de recuperação da operação e recuperar o código perdido. Claro, se você perder o código não confirmar o registro, então parabéns, seu código realmente perdido.

Compressão cometer recorde

Este é um recurso muito útil, mencionado anteriormente, quando no desenvolvimento do código tentamos manter uma maior frequência de submissão, para evitar códigos acidentalmente perdidos. Mas quando o código merge real, nós não queremos ter muitos redundante para enviar registros, rebase e código de fusão, será cada commit para lidar com tudo isso, às vezes resultando em trabalho redundante. Portanto, após a compressão sem comprometer registro de log permite muito limpo, mas também fácil de código merge uso rebase.

Assim, como compressa cometer gravá-lo? ✦ uso  git log para encontrar ✦ começando commitid  git reset commitID, lembre-se não usar  --hard re-parâmetros ✦  git add && git commit ✦  git push -f origin branchName, porque existe um conflito, é necessário forçar os ramos distais de cobertura, por favor tenha cuidado. ✦ incorporada no mestre, o mestre actualizam então a extremidade distal.

Além disso, existem duas maneiras de log compressa:  git commit --amend: append comprometem com uma consolidação por diante. git rebase -i: Através rebase interativo, fornece controle do ramo cometer, para que você possa limpar a bagunça da história.

 

A partir de uma aplicação prática, a compressão de três log são excelentes, git reset mais simples, git rebase -i mais delicada.

rebase git, código merge

A introdução anterior breve  git rebase e  git merge distinção, francamente, as suas vantagens e desvantagens. git rebase Faça o seu cometer registro muito limpo, seja online ou reversão codereview são mais fáceis, mas há o risco da operação, certifique-se de usar cautela. git merge Operação mais segura, mas também mais fácil, mas ele irá adicionar alguma redundância cometer registro.

Aqui para processo de consolidação brevemente falar e considerações rebase-lo. Veja a figura

 

Há três pontos a serem observados: ✦ REBASE primeiro encontrar nó ancestral comum ✦ ancestral nó a partir dos registros de pagamento submetidos a ramificar, e depois rebase para commitID branch master após rebase ✦ realmente mudou, especialmente o terceiro ponto, muitas vezes levam as pessoas ao mau uso, isso não deixe de prestar atenção.

Imagine o processo de desenvolvimento, se nós freqüente rebase branch master, o que vai acontecer então?

 

Quando você continuar a mestre rebase, de fato, o seu d locais tornaram-se d`, e depois em galho e pay remota consistente, a sua filial local confirmar o registro foi distorcida irreconhecível.

Também nota, nunca use rebase em uma filial comum! ! !

 

Assim, para a segurança, a equipe poderia ser considerado mesclagem.

solicitação de recebimento, codereview conveniente

Git não só fornece ajuda para código gerenciado e desenvolvimento de código, revisão de código também fornece uma funcionalidade semelhante. Quando desenvolvemos o ramo após a função, você pode puxar pedido para iniciar uma solicitação, selecione a comparação exigida dos dois ramos

 

Ele vai criar uma solicitação de recebimento, o desenvolvimento de pessoal relevantes para rever o código. Em circunstâncias normais, a equipe deve incentivar cross-análise, quando se trata de um código comum, não se esqueça de deixar a revisão pessoas relevantes.

git gancho, ciclo de vida do GIT

A maioria das pessoas deveria ter, ouvido, operação git tem seu próprio ciclo de vida, em diferentes ciclos de vida, podemos fazer algumas coisas automação.

Aqui estão dois exemplos simples: ✦ pré-commit quando podemos fazer eslint ✦ post-commit, podemos fazer uso de ferramentas semelhantes para fazer Jenkins integração contínua

Claro que existem ciclo de vida mais muitos, referem-se especificamente ao  Git gancho

git submódulo && git subárvore, módulo de gestão de terceiros

Estes dois comandos são normalmente utilizados para gerenciar módulos comuns de terceiros. Por exemplo, alguns comum subjacente a lógica, middleware, há algum componente comum de negócios podem mudar frequentemente. Claro, há diferenças entre os dois. git submodule É usado principalmente para gerenciar alguma forma um módulo comum ou atualizar a lógica subjacente. git subtree Para alguns exigem bidirecional atualização reutilizável Logicamente, especialmente para a gestão. Por exemplo, alguns códigos de componentes de negócios precisa de reutilizar. Na prática antes de mim, eu consegui construir uma lógica do sistema sub-árvore.

alias de git, simplificar comandos Git

Podemos simplificar os comandos do Git para ser inserido através da configuração apelido git. Por exemplo, o git subárvore necessidade anterior para entrar um longo comandos Git, podemos configurar  .git/config arquivo para resolver.

// git stpull appfe demo/xxx
// git stpush appfe demo/xxx
[alias]
    stpull = !git subtree pull --prefix=$1 appfe $2 \
        && :
    stpush = !git subtree pull --prefix=$1 appfe $2 \
        && git subtree split --rejoin --prefix=$1 $2 \
        && git subtree push --prefix=$1 appfe $2 \
        && :

Concluiu Diansha?

Este artigo introduz o funcionamento normal Git ✦ incluem códigos de clonagem, a operação, ramos de operação e similares cometer. Na verdade, Git comando operação normal não é muito, ver um resumo breve da primeira parte.

Em segundo lugar, introduz o processo de desenvolvimento de Git ✦ Esta seção apresenta o modelo de dois dominante de desenvolvimento: comparação de leve  baseado no ramo funcional do processo de desenvolvimento  e para projetos complexos  processo de desenvolvimento GitFlow  , dois modelos de cada cenário de uso para uso rotineiro o ex teria sido suficiente.

Finalmente, algumas dicas práticas ✦ Git, incluindo: operações reflog, precauções de compressão log, REBASE, o uso de solicitação de recebimento de fazer codereview, uso gancho git para fazer algum trabalho de automação.

 

Citar link original : https://www.cnblogs.com/summary-2017/p/10259006.html

https://www.cnblogs.com/qcloud1001/p/9796750.html

a ideia de usar git gerenciamento de projeto links úteis: https://blog.csdn.net/geng31/article/details/78585557/

                                                

Blog Escreve é ​​fácil esquecer para lembrar o que são, mas também pelo seu resumo trabalho adicional, o artigo pode ser reproduzida sem copyright. Queremos fazer seus próprios esforços para fazer melhor, vamos trabalhar juntos para o progresso!

Se você tiver alguma dúvida, por favor, discutir com todos, o código de qualquer dúvida, bem-vindo para me corrigir grande Deus!

 

Adicione ao seu par sonho de asas, eles podem voar livremente no céu!

Lançou dois artigos originais · ganhou elogios 0 · Visualizações 33

Acho que você gosta

Origin blog.csdn.net/smilehappiness/article/details/105054291
Recomendado
Clasificación