Git - ¿Cuál es la diferencia entre push.default "emparejamiento" y "simple"

Usé git por un tiempo, pero nunca tuve que configurar un nuevo repositorio remoto, y tenía curiosidad por hacer eso. Leí los tutoriales y estoy confundido acerca de cómo hacer que git push funcione.

Si solo uso git push , me pide que vea la rama predeterminada (?) ¿Para señalar? ¿Cuál es la diferencia entre las dos opciones que ofrezco?

 git config --global push.default matching git config --global push.default simple 

La coincidencia solo empuja todas las sucursales que tengo en mi repositorio local, y si no coinciden, debo indicarle manualmente que haga clic en las nuevas sucursales locales que tengo, ¿verdad? ¿Es mejor usar o simplemente más fácil?

163
18 февр. fijado por Josh el 18 de febrero 2014-02-18 00:30 '14 a las 0:30 2014-02-18 00:30
@ 3 respuestas

git push puede llamar a todas las sucursales o una dependiente en esta configuración:

Haga clic en todas las ramas

 git config --global push.default matching 

Moverá todas las ramas a la rama remota y las fusionará. Si no desea presionar todas las ramas, puede hacer clic solo en la rama actual.

Haga clic solo en la rama actual

 git config --global push.default simple 

Entonces, en mi opinión, es mejor usar esta opción y presionar la rama del código en la rama. Es mejor presionar las ramas manualmente e individualmente.

Para leer más, vaya al mensaje

207
19 февр. La respuesta la da Lalit Sachdeva el 19 de febrero. 2014-02-19 00:06 '14 a las 0:06 2014-02-19 00:06

De la documentación GIT: Documentos Git

A continuación se muestra información completa. En resumen, simple solo empujará la current working branch e incluso entonces, solo si también tiene el mismo nombre en el control remoto. Esta es una muy buena configuración para los novatos y se convertirá en la GIT 2.0 predeterminada en GIT 2.0

Mientras que la matching empujará a todas las sucursales localmente que tengan el mismo nombre en el control remoto. (Excluyendo su rama de trabajo actual). Esto significa que muchas ramas diferentes estarán potencialmente involucradas, incluyendo aquellas que ni siquiera quieres usar.

border=0

En mi uso personal, por lo general uso otra opción: current , que empuja la rama de trabajo actual (porque siempre tengo para cualquier cambio). Pero para un novato, sugiero un simple

push.default
Especifica la acción de inserción GIT si no hay refspec. claramente dado. Diferentes valores son adecuados para procesos de fabricación específicos; por ejemplo, en un flujo de trabajo puramente central (es decir, la muestra es igual al objetivo), en sentido ascendente, es probable que lo desee. Valores posibles:

no presione nada (error) si la refspec está explícitamente dada. Esto está dirigido principalmente a personas que quieren evitar errores, siempre siendo explícitos.

actual: haga clic en la rama actual para actualizar la rama con el mismo nombre en el lado receptor. Funciona tanto en flujos de trabajo centrales como no centrales.

arriba: haga clic en la rama actual para volver a la rama cuyos cambios generalmente se integran en la rama actual (que se llama @ {Arriba}). Este modo solo tiene sentido si se extrae de (por ejemplo, un flujo de trabajo central).

tiempo de inactividad: en un flujo de trabajo centralizado, trabaje en sentido ascendente con seguridad adicional para dejar de hacer clic si el nombre de la sucursal está en sentido ascendente desde el local.

Cuando presiona el control remoto, aparte del control remoto, por lo general, tira, funciona como una corriente. Esta es la opción más segura y es adecuada para principiantes.

Este modo se convertirá en estándar en GIT 2.0.

coincidencia: haga clic en todas las ramas con el mismo nombre en ambos extremos. Esto hace que un repositorio en el que haga clic para recordar el conjunto de sucursales que se eliminará (por ejemplo, si siempre hace clic en maint y master allí y no en otras sucursales, el repositorio en el que haga clic tendrá estas dos sucursales, y su maint local y El maestro será presionado allí).

Para usar este modo de manera efectiva, debe asegurarse de que empuja todas las ramas, está listo para ser expulsado antes de iniciar el empuje GIT, porque todo el punto de este modo es permitirle empujar todas las ramas en un extremo. Si normalmente completa el trabajo con una sola rama y presiona el resultado, mientras que las otras no se completan, este modo no es para usted. Además, este modo no es adecuado para cambiar a un repositorio central común, ya que otras personas pueden agregar nuevas sucursales allí o actualizar la punta de las sucursales existentes más allá de su control.

Este es actualmente el valor predeterminado, pero GIT 2.0 cambiará el valor predeterminado a simple.

77
19 февр. La respuesta la da UpAndAdam el 19 de febrero. 2014-02-19 01:26 '14 a la 1:26 2014-02-19 01:26

Notas de lanzamiento de Git v2.0

Notas de compatibilidad con versiones anteriores

Cuando git push [$there] no dice qué presionar, hemos usado la tradicional "coincidencia" de la semántica hasta ahora (todas sus sucursales se enviaron al remoto, si ya hay sucursales con el mismo nombre). En Git 2.0, el valor predeterminado es la semántica "simple", que empuja:

  • solo la rama actual a la rama con el mismo nombre y solo cuando la rama actual está configurada para integrarse con este control remoto si hace clic en el mismo control remoto que está extrayendo; o

  • solo la rama actual a la rama con el mismo nombre, si hace clic en el control remoto, que no es el que normalmente elige.

Puede usar la variable de configuración "push.default" para cambiar esto. Si es un veterano que desea continuar utilizando la "coincidencia" de la semántica, puede configurar la variable para "coincidir", por ejemplo. Lea la documentación para otras características.

Cuando git add -u y git add -A se inician dentro de un subdirectorio sin especificar las rutas que se agregarán en la línea de comandos, funcionan con todo el árbol para mantener la coherencia con git commit -a y otros comandos (estos comandos se usan solo para el subdirectorio actual). Dile a git add -u . o git add -A . Si desea limitar la operación al directorio actual.

git add <path> ahora coincide con git add -A <path> , por lo que git add dir/ notará las rutas que eliminó del directorio y registrará la eliminación. En versiones anteriores de git add <path> , git add <path> usa para ignorar la eliminación. Puede decir que git add --ignore-removal <path> agrega solo las rutas agregadas o modificadas a <path> , si realmente lo desea.

1
01 янв. La respuesta se da CodeWizard 01 Ene. 2016-01-01 01:33 '16 a la 1:33 2016-01-01 01:33

Otras preguntas sobre tags o Haz una pregunta