Git Detalles para mí

Se refirió a aquí en adelante, otros blog, muy bien escrita, colecciones aquí, para facilitar su posterior visualización

 

Si desea utilizar rápidamente Git, puedo hacer referencia a otra entrada del blog, no son comunes Resumen Git comandos

 

Git es lo que?

Git es un distribuidos contenedores código de gestión, tanto de retención local y remota por un mismo código. repositorio Git se compone principalmente de tres partes: la caché de código nativo, cometió la historia, esta es la esencia de casi todas las operaciones, pero para el artículo más sencillo, no todo esto comenzó, interesado puede ir a buscar la siguiente . Directo al grano, lo que la dirigimos dichas operaciones comunes tienen Git.

Git tiene qué operaciones normales?

Simplemente tenemos que hablar de lo que el funcionamiento normal de Git, nos permiten hacer frente a las necesidades de desarrollo simples.

clon de código

La clonación de códigos distales ✦

git clone + 远程库地址

✦ Compruebe estados del código local

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

 

✦ cambio rama remota síncrona

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

✦ extremo del código de sincronización cambios distal.

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

Sobre git rebase git merge y sus respectivas ventajas y desventajas, se detallará más adelante.

Esta sección describe la operación en relación con el clon relacionado código, el extremo distal del cambio de código de sincronización. A continuación, nos fijamos en algunas operaciones en código nativo.

operando comprometerse

En primer lugar hay que aclarar un concepto: que cada confirmación es un estado de código completo, con un commitID ser el único signo.

 

Desde una cierta perspectiva, Git es mantener un árbol commitID, sostiene respectivamente código bajo diferentes condiciones. Por lo que su médico sobre cualquier cambio de código, y en última instancia se verá reflejado a cometerlo.

✦ Nueva cometer

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

✦ revocación cometer

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

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

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

El código de fusión combinada combinada ✦ cometer cometer, esencialmente en dos estados diferentes.

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

Así git rebase git merge y al final lo que diferencia hay? fusionar dos ramas después del conflicto, añadir una confirmación adjunta al maestro. rebase es comprometerse en someFeature registros anexados rama en la rama principal, vale la pena señalar que esta vez realmente confirmó cambios han tenido lugar.

 

En términos relativos, los conflictos git merge más directamente, y git rebase comprometerse a garantizar un registro claro.

Combinar cometer, por lo general los conflictos. Puede buscar caracteres especiales tales como Global <<<, encontrar la posición del código para ser procesados, a continuación, un análisis cuidadoso de qué parte del código debe ser retenido.

 

Cuando el trabajo en equipo, la rama es esencial. Entonces, ¿cómo debería la rama para hacerlo funcionar?

rama de la operación

La rama de la llamada es en realidad un puntero que apunta commitID, se puede ir .git/refs/headshacia abajo y ve.

 

En circunstancias normales, se recomienda al menos una rama puede ser etiquetado claramente nombre de la función, si el usuario puede etiquetar el mejor, por ejemplo qixiu/feature.

✦ Ver rama

 

Puede ver tanto la rama local y remota rama, se le ocurrió la introducción del texto git fetch -ppuede ser el primero en ver la información más reciente rama.

✦ nueva rama local es en realidad crear un puntero a un determinado commitID.

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

✦ Eliminar para quitar una rama local apunta realmente puntero commitID.

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

✦ La adición de la rama remota Normalmente, somos una nueva rama local, y luego actualizar a una forma remota para agregar una rama remota

git push origin qixiu/feature

✦ eliminar rama remota Del mismo modo, también estamos actualizando a una forma remota para borrar una rama remota

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

simple resumen de lo

Se dice que puede haber algunas dispersas aquí un breve resumen de lo que las operaciones de uso frecuente son:

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 // 更新本地代码到远端

Más de unos pocos han sido capaces de cumplir la orden diaria de la operación, después de escenarios un poco más complejas introducirán texto

Basado en la operación básica, el proyecto actual, ¿cómo deberíamos usarlo para la colaboración Git?

¿Qué buenas prácticas tienen Git?

Git tiene algunos procesos de desarrollo maduro, más convencional de dos maneras: sobre la base de la rama funcional del proceso de desarrollo  y el  proceso de desarrollo GitFlow . En relación con, recomiendo el primer caso, si se trata de proyectos grandes y complejos, recomendamos proceso de desarrollo GitFlow. A continuación, una breve introducción de estos dos modo cooperativo.

ramas de operaciones del modelo de colaboración basado

proceso de desarrollo basado en la función rama es en realidad una palabra: con una rama para llevar desarrollo funcional, después de que el final del desarrollo se incorporará a la rama principal. Su ventaja es la capacidad de asegurar rama principal limpia, sino que también permiten una lógica ramificada código centró, pero también es fácil CodeReview.

convención de nomenclatura rama

Recomendamos utilizar el siguiente formato: ownerName / FeatureName. Esto no sólo es fácil de conocer la función de la cobertura de sucursales, también es fácil de encontrar a la persona a cargo de la rama. Después de que el tiempo de limpieza es también muy conveniente rama.

Proceso de desarrollo

✦ Desde el maestro cortar una nueva sucursal

git checkout -b qixiu/newFeature

✦ desarrollar algunas nuevas características, y luego presentar una propuesta tiempos de inscripción más código de frecuencia al repositorio local para permitir mayor flexibilidad para guardar o deshacer los cambios. Además, con el fin de asegurar una clara commit de registro, las notas propuestas claras notas.

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

Si la función ✦ desarrollado, puede iniciar un proceso CodeReview ✦ Si el código mediante pruebas, maestro incorporado, a continuación, preparado en la línea de

// 冗余版 合并到 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 // 将本地代码更新到远端

Hay varios puntos a nota: no dominan código de fusión, es importante para asegurar la disponibilidad del maestro. Asegurar que el funcionamiento adecuado de la rama derecha. Tanto si se está tratando con conflictos o actualización distal del código, conserve el temor.

Esto, un proceso normal de desarrollo basado en la función rama es completa. A continuación, echar un vistazo a otro proceso de desarrollo.

proceso de desarrollo GitFlow

GitFlow que habló anteriormente sobre el proceso de desarrollo basado en la rama funcional es mucho más complejo, es más adecuado para proyectos grandes y complejos. Se proyecta en todo el proceso de publicación define un modelo de oficina estricta, todos los procesos de desarrollo se llevan a cabo en torno a la estricta modelo de oficina. Y este modelo es el papel de cada rama de la convención, y cómo se comunican.

Vamos a echar un vistazo a GitFlow proceso de desarrollo en varias convenciones de la rama, así como el papel de sus respectivos compromisos es una especie de ¿cómo?

 

✦ rama principal: medios para almacenar la versión en línea del código, el código puede facilitar la versión de juego. ✦ Desarrollar ramas: ramas de función de integración. ✦ ramas de funciones: una función rama, cortado de Desarrollo de la rama, y ​​la función de tiempo completo y se fusionaron de nuevo en Desarrollar rama, la rama no lo hace directamente interactúan con y Maestro. ramas ✦ estreno: una iteración corresponde en general. Después de una versión combinada de todas las funciones a desarrollar ramas, corte de una rama de lanzamiento Develop. Esta rama no se añade a los nuevos requisitos, correcciones de errores se pueden completar, documentos de trabajo perfecto. Tenga en cuenta que la liberación de código, hay que estar fusionado en la rama principal, sino también combinar para desarrollar rama. ✦ de revisión ramas: la rama de reparación de emergencia es la única rama cortada del Maestro, una vez reparado se pueden incorporar en la rama principal y la rama Develop.

Como se puede ver en cada rama funciones y convenciones, que procesa más de multi-limitación, no es adecuado para aplicaciones a pequeña escala. Por supuesto, hay algunos aparatos para GitFlow  gitflow  puede automatizar estas tareas, para grandes proyectos también es útil.

Hablando frente de los cuales hay operaciones básicas Git, luego se introduce el flujo de trabajo de dos de corriente. A continuación nos fijamos en lo que Git especial habilidades Vale la pena mencionar.

Git qué consejos?

operación de gestión de código de Git, además de las funciones básicas, hay algunos consejos que pueden hacer ellos mismos.

reflog git, vista Actividad

Tengo que poner esta primera introducción, porque tenía varias veces guardan mi código

 

Cuidadosamente mapa de fantasía, ficha reflog todas sus operaciones de comando git, para algunos escenarios de recuperación inexplicables o el mal uso de reversión de gran ayuda.

Imagine un escenario: Se utiliza  git reset --hard commitID el código de desarrollo local para volver a rodar una versión anterior, pero no se ha llevado hasta el extremo más alejado, cómo volver el código perdido? Si utiliza vista de registro git commit logs, y descartar aquellas que no pueden volver commitID. El reflog git, pero un registro detallado de cada operación commitID se puede hacer fácilmente su tiempo de recuperación de la operación y recuperar código perdido. Por supuesto, si se pierde el código no confirmar el registro, entonces las felicitaciones, su código realmente perdido.

Compresión cometer registro

Esta es una característica muy útil, ya mencionada, cuando en el desarrollo del código tratamos de mantener una mayor frecuencia de presentación, para evitar accidentalmente códigos que faltan. Pero cuando el código de fusión real, no quiero tener demasiados redundante a presentar registros, rebase y el código de combinación, se comprometerán a manejar todo, a veces resulta en el trabajo redundante. Por lo tanto, después de la compresión sin comprometer entrada de registro permite muy limpia, pero también fácil de código de fusión utilización de rebase.

Por lo tanto, la forma de compresa cometer grabarlo? ✦ uso  git log para encontrar ✦ partir commitid  git reset commitID, no recuerde utilizar  --hard re-parámetros ✦  git add && git commit ✦  git push -f origin branchName, porque hay un conflicto, es necesario forzar las ramas distales de la cubierta, por favor tenga cuidado. ✦ incorporado en el maestro, el maestro actualiza entonces el extremo distal.

Además hay dos maneras para iniciar sesión compresa:  git commit --amend: append comprometerse a una confirmación sobre. git rebase -i: A través de rebase interactivo, proporciona un control de la rama cometió, por lo que puede limpiar el desorden de la historia.

 

Desde una aplicación práctica, la compresión de tres registro son excelentes, git reset más simple, git rebase -i más delicado.

git rebase, código de fusión

La anterior breve introducción  git rebase y  git merge distinción, francamente, sus ventajas y desventajas. git rebase Comprometerse a hacer su registro muy limpia, ya sea en línea o rollback CodeReview son más fáciles, pero existe el riesgo de la operación, asegúrese de usar precaución. git merge Operación más segura, pero también es más fácil; pero va a añadir un poco de redundancia cometer registro.

Para hablar brevemente proceso de consolidación y las consideraciones que rebase. Ver la figura

 

Hay tres puntos a nota: ✦ rebase en primer lugar encontrar el nodo antepasado común ✦ antepasado nodo desde los registros de pago presentadas a bifurcarse, y luego reajustar a commitID rama principal después de rebase ✦ realidad ha cambiado, especialmente el tercer punto, a menudo las personas hacen un mal uso, así que asegúrese de prestar atención.

Imagínese proceso de desarrollo, si nos frecuente rama principal de rebase, lo que sucederá a continuación?

 

Cuando continúas maestro de rebase, de hecho, su local d se han convertido en d`, y luego a la rama y de pago a distancia constante, su sucursal de confirmar el registro ha sido distorsionado más allá del reconocimiento.

También nota, no utilice nunca rebase en una rama común! ! !

 

Por lo tanto, para la seguridad, el equipo podría considerarse fusión.

solicitud de extracción, CodeReview conveniente

Git no sólo proporciona ayuda para el código administrado y el desarrollo de código, revisión de código también proporciona una funcionalidad similar. Cuando desarrollamos la rama después de la función, se puede tirar petición para iniciar una solicitud, seleccione la comparación requerida de las dos ramas

 

Se va a crear una solicitud de extracción, el desarrollo del personal pertinente para revisar el código. En circunstancias normales, el equipo debe fomentar cruzada opinión, cuando se trata de un código común, asegúrese de dejar que la opinión de personas relevantes.

gancho git, ciclo de vida Git

La mayoría de las personas debería haber, oído, operación GIT tiene su propio ciclo de vida, en diferentes ciclos de vida, podemos hacer algunas cosas automatización.

He aquí dos ejemplos sencillos: ✦ pre-commit cuando podemos hacer eslint ✦ post-commit, podemos hacer uso de herramientas similares para hacer Jenkins integración continua

Por supuesto que hay muchos más del ciclo de vida, se refieren específicamente a  Git gancho

git submódulo && git subárbol, el módulo de gestión de terceros

Estos dos comandos se utilizan normalmente para gestionar módulos comunes de terceros. Por ejemplo, algunos común que subyace la lógica, middleware, hay algunos componentes de negocio común puede cambiar con frecuencia. Por supuesto, existen diferencias entre los dos. git submodule Se utiliza principalmente para manejar de alguna manera un módulo común o actualizar la lógica subyacente. git subtree Para algunos requieren de dos vías de actualización reutilizable Lógicamente, en especial para la gestión. Por ejemplo, un código componentes de negocio tiene que volver a utilizar. En la práctica antes que yo, he logrado construir una lógica del sistema subárbol.

alias GIT, simplifican los comandos de Git

Podemos simplificar los comandos de Git a ser introducidos mediante la configuración de alias de git. Por ejemplo, el sub-árbol git necesidad anterior para entrar en un largo comandos de Git, podemos configurar  .git/config el archivo de 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 \
        && :

Concluido Diansha?

Esto introduce papel el funcionamiento normal Git ✦ incluir códigos de clonación, la operación, las ramas de operación y similares comprometen. De hecho, Git comando de operación normal no es mucho, ver un resumen breve de la primera parte.

En segundo lugar, se introduce el proceso de desarrollo de Git ✦ En esta sección se presenta el modelo de desarrollo dominante dos: la comparación de peso ligero  basado en la rama funcional del proceso de desarrollo  y para proyectos complejos  procesos de desarrollo GitFlow  , dos modelos de cada escenario de uso para el uso rutinario la antigua habría sido suficiente.

Por último, algunos consejos prácticos ✦ Git incluyendo: operaciones reflog, las medidas de compresión de registro, rebase, el uso de la solicitud de extracción para hacer codereview, el uso de gancho git para hacer algún trabajo de automatización.

 

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

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

La idea de utilizar la gestión de proyectos git enlaces útiles: https://blog.csdn.net/geng31/article/details/78585557/

                                                

el blog de escritura es fácil olvidar el fin de recordar lo que son, sino también por su resumen de trabajo adicional, el artículo se puede reproducir sin derechos de autor. Queremos hacer de sus propios esfuerzos para hacer mejor, que trabajan juntos para el progreso!

Si tienes alguna pregunta, por favor hable con todo el mundo, el código alguna pregunta, recepción para corregirme gran Dios!

 

Añadir a su par de alas de sueño, que pueden volar libremente en el cielo!

Liberadas dos artículos originales · ganado elogios 0 · Vistas 33

Supongo que te gusta

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