La operación de Git en Idea es suficiente para leer este artículo (la explicación más completa, el artículo es relativamente largo y las capturas de pantalla son más para ilustrar el problema)

Saltar parte del entorno

Cree un proyecto desde 0 para explicar git, incluida la creación de nuevas ramas remotas, la reversión y otras operaciones.

Habrá preguntas y preguntas durante cada explicación.

  1. Explicación básica de la parte
  2. Práctica parte avanzada

 

Contenido básico 

Si ya tiene un almacén en github, use idea para clonar 

Si está en la interfaz a continuación, siga los pasos a continuación

 

Realizar descarga de clonación

Si es la siguiente interfaz, pase

Lo mismo que arriba 

 Si no tiene un proyecto existente en github o desea crear un nuevo proyecto

Cree un nuevo proyecto ordinario a través de IDEA (lo que sea, maven está bien)

Como se muestra abajo

Un proyecto maven ordinario de TestGit (un nuevo proyecto no está controlado por versiones)

El primer paso es introducir VCS (acrónimo del sistema de control de versiones para VCS), correspondiente a la opción VCS en la parte superior de la idea. Hay ventanas y Ayuda al lado

Active el control de versiones   como se muestra a continuación

Elija Git como demostración aquí 

Como se muestra en la figura siguiente: hay una explicación en la captura de pantalla 

En este punto, debe tenerse en cuenta que el control de versiones aquí es el almacén local.

Se enviará al  envío local y al envío remoto (se requiere iniciar sesión en la cuenta de github)

Inicie sesión en github en idea como se muestra a continuación

Hay dos formas de iniciar sesión:

Cuenta + contraseña para iniciar sesión la máxima autoridad tiene todos los privilegios de la cuenta

Los permisos de inicio de sesión del token los crea el propietario de la cuenta y se asignan los permisos correspondientes.

Dirección de creación de tokens: https://github.com/settings/tokens

Como se muestra abajo:

Como se muestra en el ejemplo a continuación: debe seleccionar los permisos correspondientes asignados y completar la Nota (para la conveniencia de la administración directa más adelante, es principalmente para saber qué Token es este Token) 

 

Después de la creación, puede iniciar sesión en el Token obtenido directamente con IDEA 

Enviar localmente

En primer lugar, debe prestar atención a los archivos que deben enviarse. Seleccione el archivo ===》 haga clic con el botón derecho ===》 git ==》 agregar a la versión controlar el archivo

Errores comunes para los principiantes:

          Seleccione directamente el elemento para Agregar (algunos archivos innecesarios también estarán controlados por la versión)

Mi consejo es:

            Simplemente agregue la carpeta src y el archivo pom.xml a la operación Agregar, y el archivo de configuración relacionado con el código, para los siguientes archivos

carpeta .idea

archivo xxxxx.iml

Idea genera automáticamente estos archivos para no enviarlos porque estos archivos de configuración son configuraciones de entorno en su computadora.

Si se envían estos archivos, no es bueno que el equipo se desarrolle en colaboración.

Porque estos archivos se clonarán cuando el clon esté inactivo, de modo que la idea de la otra parte usará el archivo de configuración en el proyecto en lugar de cargar la configuración en su propia computadora.

La versión y la ruta específicas del jdk (es posible que la otra parte no encuentre el jdk y deba configurar manualmente el SDK) y los hábitos de uso de ideas de la otra parte y otras configuraciones serán la configuración de la idea en su propia computadora. Por lo tanto, no seleccione directamente el elemento para agregar

 

Asegúrese de seleccionar manualmente el archivo correspondiente usted mismo, no agregue este tipo de archivos innecesarios.

Deshacer Agregar se puede deshacer presionando Ctrl Z, o seleccionando el archivo Git como se muestra a continuación

 En términos generales, solo se necesitan la carpeta Add src y el archivo pom.xml

Hay una función de envío de git. Si no hay archivos en la carpeta bajo control de versión, cuando lo envíe, encontrará que no hay carpetas como src en el almacén, sino solo un archivo pom.xml.

En otras palabras, Git solo controla las versiones de los archivos, no de las carpetas, lo que es fácil de entender.

Hacer un compromiso local

Principalmente para generar algunos datos para una demostración posterior, aquí creo una nueva clase Hello (ruta del paquete top.huashengshu) en src y la agrego a

El símbolo √ en la barra de herramientas del botón enviar

Por supuesto, también puede hacer clic derecho para enviar, o puede enviar a través de git en la barra de opciones de VCS arriba. Haga clic en el botón de arriba para enviar directamente

 Haga clic en Confirmar para envío local 

Para envío remoto, elija:

 Ver registro después del envío local

Comparta el proyecto en el almacén remoto en github (cree si no lo hay, envíelo si lo hay y créelo directamente aquí)

Debe iniciar sesión en la cuenta de github, y luego aparecerá el siguiente cuadro emergente, ingrese el nombre del almacén, la descripción y si es privado

Corresponde a nuevo en github

Después del éxito como se muestra a continuación:

 

Descripción del icono:

La rama verde representa la rama local.

El amarillo es el puntero principal, la etiqueta amarilla se moverá después de la reunión de presentación local.

 La captura de pantalla anterior es incorrecta, hay 3 registros de sucursales y la marca amarilla de la cabeza solo se usa para indicar la posición actual de la sucursal. Al enviar, la sucursal se retrasará de acuerdo con la marca amarilla.

Nueva sucursal local

 

 

Nueva sucursal remota 

Las sucursales remotas deben ser generadas por push de  sucursal local

Es decir, la operación push activará la creación de una sucursal. Si no ha enviado una sucursal remota y planea enviar la sucursal local a la remota para generar una nueva sucursal, siga los pasos a continuación.

 

 

 

Luego haga clic en Push para crear una nueva rama. Como se muestra a continuación, vaya a github para verificar la rama recién creada

Además, también puede presionar de la siguiente manera

Además, puede activar el empuje a través de los siguientes  

 

Además, haga clic derecho para activar la creación de una nueva rama remota

Lo anterior es una operación de rama más básica 

Parte avanzada

Incluyendo gestión de conflictos, reversión de sucursales, error de procesamiento de confirmación

Manejo de conflictos de código

En términos generales, un gran proyecto será desarrollado conjuntamente por muchas personas. A menudo enviamos y extraemos código mientras usamos Git para las operaciones diarias.

Mucha gente encontrará algunos problemas al modificar el proyecto.

Por ejemplo, el programador A envió un código por la noche

Al día siguiente se pusieron manos a la obra el programador A y el programador B. Lo primero es comprobar si el código del servidor está actualizado, es decir, la siguiente operación:

Entonces el código obtenido por el programador B es:

Después de que el programador A se puso a trabajar, de repente pensó que había un error en el código anoche, por lo que el programador A lo corrigió rápidamente y envió el código.

La versión anterior de git del programador B es la versión anterior.

Una vez que el programador A envía el código, el código del almacén remoto se convierte en

Debido a que el programador B no sabe que el programador A ha enviado el código nuevamente, y luego, después de que el programador B termina su propio código, el código en la computadora del programador B se ve así

 

En este momento, debido a que la versión en el servidor ha sido modificada, para asegurar que el código del programador A pueda ser retenido, el programador necesita integrar el código de la siguiente manera al presionar a la rama principal:

Aquí, debido al diferente número de líneas de código, se fusionan directamente. Porque el programador A y el programador B operan en la misma clase, pero no se afectan entre sí y se fusionan directamente.

En la confirmación y envío anteriores, se sugiere que este código de clase es diferente, y el color de fondo es su propio código, y el servidor remoto es la ventana izquierda.

Resultados finales:

 

Si el programador B y el programa A modifican la misma línea de código, debe confirmar manualmente si usar el código del programador A o el código del programador B, o agregar ambos. 

Suponiendo que la versión del servidor es

  

Ambos han llevado a cabo un proyecto de actualización. Los programadores A y B han modificado el código del otro. El programador A primero envía lo siguiente: 

B también modificó el código, y ambos cambiaron la misma línea de código

 

Pídale al programador A que envíe primero, y A puede enviar normalmente. B pedirá

Operación del programador B:

Si elige Aceptar el suyo, se sobrescribirá el código del programador A

Si elige Aceptar el suyo, los cambios del programador B en la línea no entrarán en vigor y lo enviarán.

Si elige fusionar, selecciónelo manualmente (esto generalmente se selecciona en desarrollo, porque necesita saber el código cambiado por el programador A)

 El resultado de la combinación se rechazará porque el conflicto debe resolverse primero, lo que significa que la combinación se realiza localmente y luego el código se envía al control remoto después de la combinación.

En este momento, no puede usar el botón para operar, debe seleccionar una sucursal para fusionar (fusionar el almacén remoto con una sucursal local) y luego empujar la sucursal hacia arriba

En este punto, encontrará que tiene éxito y es fácil de entender. El código fusionado es más código modificado por el mismo programador B. Para git, es equivalente a una operación de una sola persona (énfasis) . Se considera seguro y natural. Puede enviar con éxito

El github final también debe ser la rama maestra actual local después de que el programador B se fusiona. El resultado final en github se muestra en la figura

La explicación es acertada y se solucionan diversas situaciones de modificación de una misma línea de código.

Para este tipo de conflicto, debe fusionarse en una rama localmente y asegurarse de que nadie más envíe el código nuevamente. Para git, solo una persona puede modificar el código a la vez. Si varias personas modifican el código, aún es necesario asegurarse de que sea a la vez. Solo una persona en el párrafo puede modificar el código y otras personas quieren enviar el código. El conflicto debe resolverse primero y luego enviarse.

Si el programador A sigue enviando, entonces el programador B debe esperar a que se envíe la versión final de A. El programador B fusiona el código del almacén remoto en el almacén local y lo envía después de resolver el conflicto. Si el programador A envía el código nuevamente durante el período de envío, entonces el programa B deberá fusionarse y luego enviarlo (solo una persona puede enviarlo correctamente en un período de tiempo)

Operación de reversión de código

Tome el programador A como ejemplo:

El registro de envío local del programador A es el siguiente

En primer lugar, debe comprender que el código de reversión tiene cuatro formas: Soft, Mixed, Hard, Keep 

 Para distinguir la diferencia entre suave, mixto, duro y mantener, primero debe comprender cómo git realiza el control de versiones y cuál es el principio de git.

El principio de git:

Git realiza el control de la versión al juzgar el estado del archivo. ¿Cómo juzga git el estado del archivo? Git realizará un algoritmo de valor hash en el archivo y obtendrá un valor hash a través del algoritmo hash. Si este valor hash y el Head actual (llamo Puntero de cabeza) compara el valor hash de la rama actual a la que apunta. Si es diferente, significa que el archivo actual ha sido modificado (al menos en comparación con Head)

Entonces el archivo modificado definitivamente requerirá control de versiones.Cuando enviemos el código, juzgará el valor hash actual y lo comparará con el valor hash del último proyecto actualizado localmente. Primero, juzgará la comparación entre el último hash obtenido del almacén remoto y el valor de hash realizado por el jefe en el almacén remoto. Ya sea que sea consistente o no, significa que no habrá conflicto, porque el código solo lo modifica usted. Si no es así, significa que alguien ha modificado el almacén remoto, lo que hace que el puntero principal del almacén remoto apunte a la nueva ubicación y el valor hash es el nuevo valor hash.

Es un poco como el algoritmo CAS   primero para determinar si el archivo del almacén de servicios se ha modificado.

Nuestro análisis del registro de envío del programador B:

Verá que la etiqueta amarilla y las verdes y moradas apuntan a la misma ubicación 

La etiqueta amarilla es la ubicación del registro de envío al que apunta el puntero principal, y la verde representa el registro de envío actual (cuando git realiza una operación de carga, primero se envía localmente, que es la marca verde. Después del envío, la marca amarilla Head señalará la misma posición que la verde )

Cuando se realiza una inserción para una confirmación remota, se inserta en un determinado registro de rama

En este momento, antes de enviar la operación, se juzgará si el código del servidor ha sido modificado por otros programadores (comparando el valor hash)

  1. Es decir, la computadora del programador B debe guardar el valor hash obtenido durante la última actualización cuando el almacén local fue actualizado por última vez. 
  2. Compare el último valor hash con el valor hash de github en este momento. Determine si se ha modificado el archivo del almacén remoto. Si se ha cambiado (el valor hash en el mismo archivo). En este momento, el valor hash no es el valor hash original. Si es así, debes fusionar el almacén de github con el almacén local antes de enviar. Si no hay ningún cambio, significa que nadie ha modificado el código en github, entonces puede enviarlo directamente, porque solo una persona ha cambiado el código)

Hay 3 conceptos en Git

  1. Enviar registro
  2. Área de amortiguamiento
  3. Área de trabajo

El espacio de trabajo es el momento en el que nuestra idea modifica el código y las operaciones en tiempo real

El área de caché es para seleccionar manualmente los archivos que necesitan ser controlados por versión a través del comando git Add y el comando Rollback

El registro de envío es enviar los archivos en el área de caché

No se enviará a través del espacio de trabajo, sino a través de la capa intermedia de la caché.

La diferencia entre suave, mixto, duro, mantener

La pista en la idea es

Lo anterior sobre Los archivos no cambiarán se refiere al área de trabajo (es decir, modifica el archivo en tiempo real sin cambiar el contenido del archivo)

Tanto el suave como el mixto se pueden revertir Vuelva a ejecutar el puntero del cabezal en la posición que seleccionó, como se muestra en la figura siguiente.

Pero la diferencia entre las dos reversiones es que la operación suave no deshará los archivos en la caché, mientras que la mezcla hará que la caché y los registros de partición sean iguales.

Suponga que estamos hablando de agregar un archivo al área del búfer, como se muestra en la figura siguiente, haga clic derecho en agregar

Rojo significa archivos que no son administrados por git, agréguelos al caché

Después de eso, el estado del archivo cambia a verde, lo que indica que el archivo está administrado por git 

Si solo realizamos una reversión suave, el estado de la caché no cambiará y el archivo tampoco cambiará

Es equivalente a suave simplemente diciendo que el puntero de la cabeza apunta a la posición de registro que eliges retroceder. El estado actual del archivo es el siguiente. Regresamos a la segunda posición de envío a través de suave

SUAVE Y MIXTA

 

Para demostrar el efecto, enviaremos una vez y veremos cómo fue este registro de sucursal por primera vez.

 Simplemente envíe localmente, encontrará una rama más, de hecho mixto también puede lograr este efecto, siempre que el valor de hash ejecutado por el jefe sea diferente del área de caché, se puede realizar el envío

Si desea cambiar el estado de un archivo, como cancelar el control de versiones de algunos archivos, podemos elegir mezclado y retrocederá al momento seleccionado. Para los archivos bajo control de versiones, si hay algunos archivos en el área de caché que no han sido versionados en este momento, el efecto de control de versiones se cancelará como se muestra a continuación. Solo quiero mezclar al momento inicial

Si se fusiona, debe conectarse al frente 

El siguiente es el elemento de actualización, es posible que no se muestre, así que simplemente actualícelo 

DIFÍCIL 和 MANTENER

Difícil es fácil de entender, es decir, reversión obligatoria. Esta operación revertirá todos los estados al momento seleccionado, el archivo cambiará al envío anterior y el código volverá al anterior, no hay demostración de esto. Rodar realmente retrocedió. Y nunca regrese al estado anterior. A diferencia del anterior suave y mixto

Y mantener

Tengo entendido que HARD y KEEP operan en el espacio de trabajo

Y suave y mixto operan en el área de amortiguación

 

Caso real

El programador A es un antiguo empleado

El programa B es un empleado nuevo. Debido a un mal funcionamiento, la carpeta .idea se envió al github del almacén remoto. El programador principal A y otros empleados deben cambiar el entorno de la idea a su propio entorno, como SDK

 

problema:

Ahora es necesario eliminar la carpeta .idea del almacén remoto github a través de la operación Git de IDEA, pero el código enviado por el programador B no se eliminará

responder:

Mi enfoque es crear un caché en la computadora del empleado B que solo contenga el código integrado correctamente y no incluya la carpeta .idea en el caché de control de versiones.

Luego, cree una nueva rama a través del área de caché para omitir la rama que se envió incorrectamente a la carpeta .idea. Y configura la rama como rama predeterminada

Es decir, a través de la reversión mixta para no contener la carpeta .idea en el control de versiones, porque el método mixto no modificará el código del espacio de trabajo, pero el puntero principal apunta a la ubicación donde elige revertir. Por supuesto, debe actualizar el proyecto. Combine de forma remota en el almacén local del programador B, luego mezcle y luego agregue manualmente los archivos que deben ser controlados por versiones para el control de versiones de git.

Es mejor crear una nueva sucursal mediante push

Opere como se muestra a continuación

Estado inicial

Se puede encontrar en github que el envío está activo y ahora está reorganizado 

 

 En este momento, no se incluye en el control de versiones y se envía. Si ocurre la siguiente fusión, generalmente elija su versión, porque aquí soy una simulación, de hecho, el código debe estar basado en el espacio de trabajo local.

 

 

Entonces puedes empujar

 Después del éxito, encontrará la rama newBranch creada en github

El siguiente paso es configurarlo como la rama predeterminada (debería haber operaciones correspondientes en IDEA)

Si desea eliminar la rama como se muestra a continuación

 

 

 

 

Supongo que te gusta

Origin blog.csdn.net/qq_41813208/article/details/106009181
Recomendado
Clasificación