Estoy trabajando en un repositorio git local. Hay dos ramas, master
y feature_x
.
Quiero empujar feature_x
al repositorio remoto, pero no quiero empujar los cambios en la master
rama.
¿Funcionará una git push origin feature_x
de mi feature_x
sucursal (la feature_x
sucursal ya existe en remoto)?
No quiero probar esto en mi caja, porque no puedo presionar para dominar en este momento.
Respuestas:
si, solo haz lo siguiente
fuente
git push -u origin <branch-name>
. Sin embargo, no lo mencionaste. Es necesario ?-u
opción en ungit-push
comando establecerá la referencia aguas arriba para rastrear la rama que se acaba de presionar. Esto hará que cosas comogit-pull
esa rama en el futuro ya sepan de qué rama extraer sin especificarlo. No se requiere como una opción para impulsar una sola rama, pero se usa ampliamente porque mucha gente quiere hacer que la rama local rastree la rama remota que están presionando.Por defecto
git push
actualiza todas las ramas remotas. Pero puede configurar git para actualizar solo la rama actual a su flujo ascendente.Significa que git actualizará solo la rama actual (desprotegida) cuando haga git push.
Otras opciones válidas son:
nothing
: No presione nada (error fuera) a menos que se especifique explícitamente una refspec . Esto está destinado principalmente a las personas que desean evitar errores siendo siempre explícitos.matching
: Empuje todas las ramas que tengan el mismo nombre en ambos extremos. (opción predeterminada anterior a la versión 1.7.11)upstream
: Empuje la rama actual a su rama aguas arriba. Este modo solo tiene sentido si está presionando al mismo repositorio desde el que normalmente extraería (es decir, flujo de trabajo central ). No es necesario tener el mismo nombre para sucursal local y remota.tracking
: Desaprobado, useupstream
en su lugar.current
: Empuje la rama actual a la rama remota del mismo nombre en el extremo receptor. Funciona en flujos de trabajo centrales y no centrales.simple
: [disponible desde la versión 1.7.11] en el flujo de trabajo centralizado, trabaje comoupstream
con una seguridad adicional para negarse a presionar si el nombre de la rama ascendente es diferente del local. Cuando empuje a un control remoto que sea diferente del control remoto desde el que normalmente tira, trabaje comocurrent
. 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.fuente
current
era lo que estaba buscando, por defectogit push
en lafoo
rama lo empujará a laorigin/foo
rama.current
tiene más sentido por defecto.simple
tiene más sentido por defecto. He actualizado la respuesta con 'cuándo usar qué'. Por favor, eche un vistazo.simple
.Actualización menor además de la respuesta de Karthik Bose : puede configurar git globalmente, para afectar a todos sus espacios de trabajo para que se comporten de esa manera:
fuente
Entonces, supongamos que tiene una sucursal local foo, un origen remoto llamado y un origen / maestro de sucursal remota.
Para empujar el contenido de foo a origin / master, primero debe configurar su flujo ascendente:
Entonces puede empujar a esta rama usando:
En el último comando puede agregar --force para reemplazar todo el historial de origen / maestro con el de foo.
fuente