Especificación de uso de Git && comandos comunes de Git
especificación de rama
rama maestra
- La rama HEAD del maestro y el compromiso histórico están en un estado estable y liberable.
- Cada confirmación de la rama maestra debe etiquetarse, como v1.0, v1.1, v1.2, v2.0, etc.
- Solo se puede fusionar desde la rama de prueba y la rama de revisión.
La combinación de revisiones debe verificarse mediante revisión y prueba de código.
Al fusionarse de la prueba, se debe alcanzar tanto el estado de calidad aprobado por la prueba como el estado funcional aprobado por el producto. - Solo el líder del equipo y la persona a cargo de la rama maestra tienen permiso para enviar código.
rama de desarrollo
- La rama de desarrollo principal, clonada en función de la rama maestra. En teoría, el código de la rama de desarrollo es consistente con la rama maestra.
rama característica
- Cuando el alcance de los cambios en el código es grande, se puede cortar una rama de características de la rama de desarrollo para el desarrollo.
Para refactorizar el código, corte una rama feature/feature_security. - Pueden existir varias ramas de funciones al mismo tiempo
- Los nuevos cambios no se pueden fusionar desde la rama de desarrollo en las iteraciones de la rama de funciones.
- Si solo una persona es responsable del desarrollo de la característica correspondiente y no hay necesidad de desarrollo colaborativo, solo debe existir en el almacén local y no enviarse al almacén remoto.
- En teoría, el líder del equipo extrae la rama de características antes del desarrollo de los requisitos. La convención de nomenclatura de la rama es: característica/característica_nombre de función. Por ejemplo, la rama de desarrollo de transformación de seguridad 2.0 es: característica/característica_seguridad2
rama de prueba (solo el líder del equipo fusiona el código)
- Rama de prueba, después de que la rama de características se fusiona con desarrollo, en la etapa de prueba, las correcciones de errores se pueden modificar directamente en esta rama o fusionar directamente desde la rama de características a la rama de prueba.
- El líder del equipo puede fusionar la rama de prueba durante la prueba.
- Durante la revisión del código, puede comparar la rama de prueba con la rama maestra.
rama de revisión
- Rama de parche, basada en el clon de rama maestra, utilizada principalmente para reparar ERRORES en la versión en línea
- Una vez completada e iniciada la corrección de errores en línea, el contenido de la corrección de revisión debe fusionarse en la rama de prueba actual.
- tirado por el líder del equipo
proceso de envío de git
Fusión de código (rebase unificada para todos los usos)
modo comando
git pull --rebase
或者
git fetch # 将远端代码更新到本地仓库
git rebase origin/master # 将代码合并到当前分支
Manera de la IDEA
Especificación de uso de etiquetas
La versión principal de la versión de demanda se basa en: V1.0.0 y V1.1.0 se agregarán más adelante
Versión menor de corrección de errores en línea: V1.0.0 agregará V1.0.1 más adelante
# 查看当前所有tag
git tag --list
git tag -a V1.0.0 -m "xxxxx需求上线"
git push --tags
Comandos de uso común de git
Crea una rama y empújala hasta el extremo remoto.
git checkout -b feature/feature_security dev # 基于dev分支创建
git push origin feature/feature_security
También puede enviar directamente la rama según la rama de desarrollo.
git push origin dev:feature/feature_security # 这样会创建分支并且将分支push到远端分支
almacenamiento temporal de git stash
git stash
Generalmente se utilizan dos escenarios:
-
Mucha gente modifica la misma rama. Después de modificarla localmente, descubrí que la rama remota ha sido modificada. En este momento, es imposible extraerla.
git stash #先将本地代码暂存至缓存区域 git pull --rebase #再更新代码至本地 git pop #再将暂存区域代码重新加载到本地
-
Cambió accidentalmente otros códigos de sucursal. Por ejemplo, originalmente
feature/feature01
desarrollado en una rama, accidentalmente cambié amaster
una rama ymaster
modifiqué el código en la rama. En este momento quiero cambiar el código afeature/feature01
la rama.git stash #先将本地代码暂存至缓存区域 git checkout feature/feature01 #再将分支切换到feature/feature01分支 git pull --rebase # 非必须步骤,更新远程代码到本地 git pop #再将暂存区域代码重新加载到本地
ingrese el código
Sugerencia: cada vez que envíe el código, si es el mismo código de función, envíelo al local al enviarlo, no lo envíe al extremo remoto cada vez, es la misma función que se fusiona en un solo envío, y hay menos envíos no válidos, como el mismo El archivo se modificó y envió varias veces y un comentario se modificó y envió varias veces.
git add . # 添加提交内容 ‘.’表示当前目录所有,如果需要单独添加某一个文件:git add xxx.txt
git commit -m 'feature(bin): add first commit' # 提交代码到本地仓库
git push origin master # 将代码推送到远程仓库
Ver todas las referencias del repositorio remoto
git remote
Ver la lista de sucursales remotas
git branch -a
fusionar un compromiso
git cherry-pick 'commit-id'
Ver el estado de los archivos en el espacio de trabajo, el área de preparación y el almacén local
git status
Modificar los comentarios enviados (no enviados al registro remoto)
git commit --amend
Presione i para ingresar al modo de edición (igual que el uso de vim). ejército de reserva
Presione ESC para salir del modo de edición
wq: salir de guardar
q!: Salir sin guardar
Guarde y salga, y luego verifique si el contenido enviado ha sido modificadogit log
Modificar el comentario de un determinado envío (no enviado al registro remoto)
En primer lugar, debe encontrar el compromiso que debe modificarse y git log
encontrar el ID de compromiso del envío. Solo se pueden usar dos o más envíos. Si solo hay un envío, úselo git commit --amend
.
git log
git rebase -i 28b197a00473ea1b46fab13263c294cce0d7401c
Después de modificar el comentario, debe pick
cambiarlo a reword
.
Modificar los comentarios enviados (enviar al registro remoto)
También puedes utilizar el método anterior.
Después de la modificación aquí, es necesario forzarlo a pasar a la rama de versión.
git push origin master -f
Entonces debes prestar atención aquí, no hagas esto en circunstancias normales.
Actualice el código localmente y combínelo
git fetch # 将远端代码更新到本地仓库
git rebase origin/master # 将代码合并到当前分
git rebase origin/feature:test # 将代码合并到测试分支
git pull --rebase # 将代码更新到本地仓库并且合并到当前分支
local y fusionar
git fetch # 将远端代码更新到本地仓库
git rebase origin/master # 将代码合并到当前分
git rebase origin/feature:test # 将代码合并到测试分支
git pull --rebase # 将代码更新到本地仓库并且合并到当前分支