Especificação de uso do Git e comandos comuns do Git
especificação de filial
ramo mestre
- A ramificação HEAD do master e o commit histórico estão em um estado estável e liberável.
- Cada commit do branch master precisa ser marcado, como v1.0, v1.1, v1.2, v2.0, etc.
- Ele só pode ser mesclado da ramificação de teste e da ramificação de hotfix.
A mesclagem de hotfixes deve ser verificada por meio de revisão e teste de código.
Ao mesclar do teste, tanto o status de qualidade aprovado pelo teste quanto o status funcional aprovado pelo produto devem ser alcançados. - Somente o líder da equipe e o responsável pela filial master têm permissão para enviar o código
ramo de desenvolvimento
- O branch de desenvolvimento principal, clonado com base no branch master, teoricamente falando, o código do branch dev é consistente com o branch master
ramo de recurso
- Quando o escopo das alterações de código é grande, uma ramificação de recursos pode ser cortada da ramificação de desenvolvimento para desenvolvimento.
Para refatoração de código, corte uma ramificação feature/feature_security. - Vários ramos de recursos podem existir ao mesmo tempo
- Novas alterações não podem ser mescladas da ramificação de desenvolvimento em iterações da ramificação de recurso.
- Se apenas uma pessoa for responsável pelo desenvolvimento do recurso correspondente e não houver necessidade de desenvolvimento colaborativo, ele deverá existir apenas no armazém local e não ser enviado para o armazém remoto.
- Teoricamente falando, o branch de recursos é puxado pelo líder da equipe antes do desenvolvimento dos requisitos. A convenção de nomenclatura do branch é: feature/feature_function name. Por exemplo, o branch de desenvolvimento da transformação de segurança 2.0 é: feature/feature_security2
branch de teste (somente o líder da equipe mescla o código)
- Ramo de teste, depois que o ramo de recurso é mesclado no dev, no estágio de teste, as correções de bugs podem ser modificadas diretamente neste ramo ou mescladas diretamente do ramo de recurso para o ramo de teste
- O branch de teste pode ser mesclado pelo líder da equipe durante o teste
- Durante a revisão do código, você pode comparar o branch de teste com o branch master.
ramo de hotfix
- Ramo de patch, baseado no clone do branch master, usado principalmente para reparo de BUG na versão online
- Depois que a correção do bug online for concluída e iniciada, o conteúdo da correção do hotfix precisa ser mesclado no branch de teste atual
- puxado pelo líder da equipe
processo de envio do git
Mesclagem de código (rebase unificada para todos os usos)
modo de comando
git pull --rebase
或者
git fetch # 将远端代码更新到本地仓库
git rebase origin/master # 将代码合并到当前分支
Maneira da IDEIA
Especificação de uso de tags
A versão principal da versão sob demanda é baseada em: V1.0.0 e V1.1.0 serão adicionadas posteriormente
Versão secundária de correção de bug online: V1.0.0 adicionará V1.0.1 posteriormente
# 查看当前所有tag
git tag --list
git tag -a V1.0.0 -m "xxxxx需求上线"
git push --tags
Comandos comuns de uso do git
Crie um branch e envie-o para a extremidade remota
git checkout -b feature/feature_security dev # 基于dev分支创建
git push origin feature/feature_security
Você também pode enviar o branch diretamente com base no branch dev
git push origin dev:feature/feature_security # 这样会创建分支并且将分支push到远端分支
armazenamento temporário git stash
git stash
Geralmente há dois cenários usados:
-
Muitas pessoas modificam o mesmo branch. Depois de modificá-lo localmente, descobri que o branch remoto foi modificado. No momento, é impossível extrair.
git stash #先将本地代码暂存至缓存区域 git pull --rebase #再更新代码至本地 git pop #再将暂存区域代码重新加载到本地
-
Alterou acidentalmente outros códigos de filial. Por exemplo, originalmente
feature/feature01
desenvolvido em uma ramificação, mudei acidentalmente paramaster
uma ramificação emaster
modifiquei o código na ramificação, neste momento quero mudar o código parafeature/feature01
a ramificaçãogit stash #先将本地代码暂存至缓存区域 git checkout feature/feature01 #再将分支切换到feature/feature01分支 git pull --rebase # 非必须步骤,更新远程代码到本地 git pop #再将暂存区域代码重新加载到本地
enviar código
Sugestão: Toda vez que você enviar o código, se for o mesmo código de função, envie-o para o local ao enviar, não envie para o terminal remoto todas as vezes, é a mesma função que é mesclada em um envio, menos envios inválidos , como o mesmo O arquivo foi modificado várias vezes, enviado várias vezes e um comentário foi modificado e enviado várias vezes.
git add . # 添加提交内容 ‘.’表示当前目录所有,如果需要单独添加某一个文件:git add xxx.txt
git commit -m 'feature(bin): add first commit' # 提交代码到本地仓库
git push origin master # 将代码推送到远程仓库
Ver todas as referências do repositório remoto
git remote
Veja a lista de filiais remotas
git branch -a
mesclar um commit
git cherry-pick 'commit-id'
Visualize o status dos arquivos no espaço de trabalho, na área de preparação e no warehouse local
git status
Modifique os comentários enviados (não enviados para o registro remoto)
git commit --amend
Pressione i para entrar no modo de edição (igual ao uso do vim). ta
Pressione ESC para sair do modo de edição
wq: sair salvar
q!: Sair sem salvar
Salve e saia e verifique se o conteúdo enviado foi modificadogit log
Modificar o comentário de um determinado envio (não enviado para o registro remoto)
Primeiro de tudo, você precisa encontrar o commit que precisa ser modificado e git log
encontrar o ID do commit do envio. Apenas dois ou mais envios podem ser usados. Se houver apenas um envio, use- git commit --amend
o
git log
git rebase -i 28b197a00473ea1b46fab13263c294cce0d7401c
Depois de modificar o comentário, você precisa pick
alterá-lo para reword
.
Modifique os comentários enviados (envie para o registro remoto)
Você também pode usar o método acima
Após a modificação aqui, ele precisa ser forçado a enviar para o branch de versão.
git push origin master -f
Então você precisa prestar atenção aqui, não faça isso em circunstâncias normais
Atualize o código localmente e mescle-o
git fetch # 将远端代码更新到本地仓库
git rebase origin/master # 将代码合并到当前分
git rebase origin/feature:test # 将代码合并到测试分支
git pull --rebase # 将代码更新到本地仓库并且合并到当前分支
local e mesclar
git fetch # 将远端代码更新到本地仓库
git rebase origin/master # 将代码合并到当前分
git rebase origin/feature:test # 将代码合并到测试分支
git pull --rebase # 将代码更新到本地仓库并且合并到当前分支