¿Cómo se empuja una sola rama Git (y ninguna otra rama)?
Pregunta
Estoy trabajando en un repositorio de git local. Hay dos sucursales, master
y feature_x
.
Quiero enviar feature_x
al repositorio remoto, pero no quiero enviar los cambios en la rama master
.
¿Funcionará un git push origin feature_x
de mi rama feature_x
( feature_x
ya existe en el control remoto)?
No quiero probar esto en mi caja, porque no puedo presionar para dominar en este momento.
Solución
sí, solo haz lo siguiente
git checkout feature_x
git push origin feature_x
Otros consejos
Por defecto, git push
actualiza todas las sucursales remotas. Pero puedes configurar git para actualizar solo la rama actual a su versión anterior.
git config push.default upstream
Significa que git solo actualizará la rama actual (extraída) cuando hagas push de git.
Otras opciones válidas son:
-
nada
: no empuje nada (error) a menos que se especifique una refspec . Esto está dirigido principalmente a las personas que desean evitar errores al ser siempre explícitos. -
coincidencia
: presione todas las ramas que tienen el mismo nombre en ambos extremos. (opción predeterminada anterior a Ver 1.7.11) -
upstream
: lleva la rama actual a su upstream rama. Este modo solo tiene sentido si está presionando hacia el mismo repositorio del que normalmente obtendría (es decir, flujo de trabajo central ). No es necesario tener el mismo nombre para sucursales locales y remotas. -
tracking
: en desuso, useupstream
en su lugar. -
current
: empuje la rama actual a la rama remota del mismo nombre en el extremo receptor. Funciona tanto en flujos de trabajo centrales como no centrales. -
simple
: [disponible desde la versión 1.7.11] en el flujo de trabajo centralizado, funciona comoupstream
con una seguridad adicional para rechazar el envío si el nombre de la sucursal en sentido ascendente es diferente de el local Cuando empuja a un control remoto que es diferente del control remoto del que normalmente tira, trabaje comoactual
. Esta es la opción más segura y es adecuada para principiantes. Este modo se ha convertido en el predeterminado en Git 2.0.
Actualización menor en la parte superior de Respuesta de Karthik Bose : puede configurar git globalmente para que todos los espacios de trabajo se comporten. de esa manera:
git config --global push.default upstream
Entonces, digamos que tienes una rama local, un origen llamado remoto y un origen / maestro de la rama remota.
Para enviar el contenido de foo a origin / master, primero debes configurar su upstream:
git checkout foo
git branch -u origin/master
Luego puedes ingresar a esta rama usando:
git push origin HEAD:master
En el último comando puedes agregar --force para reemplazar todo el historial de origen / maestro con el de foo.