He estado usando git durante un tiempo, pero nunca he tenido que configurar un nuevo repositorio remoto y tengo curiosidad por hacerlo. He estado leyendo tutoriales y estoy confundido sobre cómo hacer que "git push" funcione.
Si simplemente lo uso git push
, ¿me pide ver una rama predeterminada (?) A la que señalar? ¿Cuál es la diferencia entre estas dos opciones que me proporciona?
git config --global push.default matching
git config --global push.default simple
La coincidencia simplemente empuja las ramas que tengo en mi repositorio local, y si no coinciden, debo decirle manualmente que empuje las ramas locales nuevas que tengo, ¿correcto? ¿Es esta la mejor práctica para usar o es simplemente la mejor?
git
git-push
git-pull
git-remote
Josh
fuente
fuente
pull.default
está disponible para actualizar todas esas sucursales localmenteRespuestas:
git push
puede empujar todas las ramas o una sola dependiendo de esta configuración:Empujar todas las ramas
Empujará todas las ramas a la rama remota y las fusionará. Si no desea empujar todas las ramas, solo puede empujar la rama actual.
Empuje solo la rama actual
Por lo tanto, es mejor, en mi opinión, usar esta opción y empujar su código rama por rama. Es mejor empujar ramas de forma manual e individual.
fuente
push.default current
respuesta de @UpAndAdam. No lo sabía.simple
ya no es una opción. En1.7.8.4
(¿y antes?) Se produce un error cuando intenta presionar. perocurrent
todavía está disponibletracking
-> empujar la rama actual a su rama aguas arriba.simple
no tiene sentido, contradice esta respuesta y es incorrecta, lo que hace que esta respuesta sea confusa. La página vinculada dicesimple
"empujará las ramas una por una. Principalmente conectado con la rama actual". ¿Eso significa que empujará las ramas secuencialmente en lugar de en paralelo? ¿Qué significa "mayormente conectado"? Luego, la descripción desimple
continúa citando la descripción dematching
, para lo cual uno pensaría que la descripciónmatching
también se aplicasimple
. Pero obviamente eso no es cierto.De la documentación de GIT: Git Docs
A continuación se muestra la información completa. En resumen,
simple
solo presionará el botóncurrent working branch
e incluso si solo tiene el mismo nombre en el control remoto. Esta es una muy buena configuración para principiantes y se convertirá en el valor predeterminado enGIT 2.0
Mientras
matching
que empujará todas las ramas localmente que tengan el mismo nombre en el control remoto. (Sin tener en cuenta su rama de trabajo actual). Esto significa que potencialmente se empujarán muchas ramas diferentes, incluidas aquellas que tal vez ni siquiera quiera compartir.En mi uso personal, generalmente uso una opción diferente:
current
que empuja la rama de trabajo actual (porque siempre me ramifico para cualquier cambio). Pero para un principiante sugeriríasimple
fuente
git push origin master
que hará lo mismo. El punto de los modos y los valores predeterminados generalmente es lo que sucede cuando simplemente dicegit push
y no le dice un control remoto o una rama. ¿Qué configuración predeterminada? te refieres a la configuración predeterminada de push.default? la configuración predeterminada en qué versión de git ... si no la recibe, su comentario es extremadamente vago.Notas de la versión de Git v2.0
Notas de compatibilidad con versiones anteriores
Cuando
git push [$there]
no dice qué presionar, hemos utilizado la semántica tradicional "coincidente" hasta el momento (todas sus ramas se enviaron al control remoto siempre que ya haya ramas del mismo nombre). En Git 2.0, el valor predeterminado ahora es la semántica "simple", que empuja:solo la bifurcación actual a la bifurcación con el mismo nombre, y solo cuando la bifurcación actual se configura para integrarse con esa bifurcación remota, si está presionando hacia el mismo remoto desde el que obtiene; o
solo la rama actual a la rama con el mismo nombre, si está presionando a un control remoto que no es donde normalmente obtiene
Puede usar la variable de configuración "push.default" para cambiar esto. Si usted es un veterano que quiere seguir usando la semántica "coincidente", puede establecer la variable en "coincidente", por ejemplo. Lea la documentación para otras posibilidades.
Cuando
git add -u
ygit add -A
se ejecutan dentro de un subdirectorio sin especificar qué rutas agregar en la línea de comando, operan en todo el árbol para mantener la coherencia congit commit -a
otros comandos (estos comandos solían operar solo en el subdirectorio actual). Digagit add -u .
ogit add -A .
si desea limitar la operación al directorio actual.git add <path>
es lo mismo quegit add -A <path>
ahora, por lo quegit add dir/
notará las rutas que eliminó del directorio y registrará la eliminación. En versiones anteriores de Git,git add <path>
solía ignorar las eliminaciones. Puede decirgit add --ignore-removal <path>
que agregue solo rutas agregadas o modificadas<path>
, si realmente lo desea.fuente