Quiero poder hacer lo siguiente:
Cree una sucursal local basada en alguna otra sucursal (remota o local) (a través de
git branch
ogit checkout -b
)Empuje la rama local al repositorio remoto (publicar), pero hágalo rastreable
git pull
ygit push
funcionará de inmediato.
¿Cómo puedo hacer eso?
Lo sé --set-upstream
en Git 1.7, pero esa es una acción posterior a la creación. Quiero encontrar una manera de hacer un cambio similar al empujar la rama al repositorio remoto.
git
repository
git-branch
git-push
git-remote
Roni Yaniv
fuente
fuente
Respuestas:
En Git 1.7.0 y posterior, puedes pagar una nueva rama:
Edite archivos, agregue y confirme. Luego presione con la
-u
--set-upstream
opción (abreviatura de ) :Git configurará la información de seguimiento durante el envío.
fuente
push.default
está configurada enupstream
, esto no hará lo que cree que hará. Intentará superar la rama de seguimiento existente. Uso:git push -u origin mynewfeature:mynewfeature
o hacergit branch --unset-upstream
primero.-u
opción cada vez que empujamos la rama a su control remoto o solo la necesitamos la primera vez?-u
una vez para iniciar el seguimiento. Después solo usegit push
Si no está compartiendo su repositorio con otros, esto es útil para enviar todas sus sucursales al control remoto y realizar un
--set-upstream
seguimiento correcto para usted:(No es exactamente lo que pedía el OP, pero esta frase es bastante popular)
Si está compartiendo su repositorio con otros, esta no es una buena forma, ya que obstruirá el repositorio con todas sus ramas experimentales poco fiables.
fuente
git pull --all
retira todo a otra parte? kewlgit push --all -u
?Antes de la introducción de
git push -u
, no habíagit push
opción para obtener lo que desea. Tuvo que agregar nuevas declaraciones de configuración.Si crea una nueva rama usando:
Puede usar el
git config
comando para evitar editar directamente el.git/config
archivo.O puede editar manualmente el
.git/config
archivo que tenía información de seguimiento para esta rama.fuente
git push origin -u local_branch:remote_branch
En pocas palabras, para crear una nueva sucursal local , haga:
Para enviarlo al repositorio remoto , haga lo siguiente:
fuente
git branch <branch-name>
ygit checkout -b <branch-name>
ambos crean una bifurcación, pero el proceso de pago cambia a la nueva bifurcaciónsrc branch-name does not match any
Una ligera variación de las soluciones ya dadas aquí:
Cree una rama local basada en alguna otra rama (remota o local):
Empuje la rama local al repositorio remoto (publicar), pero hágalo rastreable
git pull
ygit push
funcionará de inmediatoUsar
HEAD
es una "forma práctica de empujar la rama actual al mismo nombre en el control remoto". Fuente: https://git-scm.com/docs/git-push En términos de Git, HEAD (en mayúsculas) es una referencia a la parte superior de la rama actual (árbol).La
-u
opción es solo la abreviatura de--set-upstream
. Esto agregará una referencia de seguimiento ascendente para la rama actual. puede verificar esto buscando en su archivo .git / config:fuente
git push -u origin <branch-name>
no funcionaba para mí, pero usarlo enHEAD
lugar de<branch-name>
funcionar perfectamente :)Yo simplemente hago
sobre un proyecto ya clonado.
Git crea una nueva rama nombrada
remoteBranchToBeCreated
bajo mis commits que hicelocalBranch
.Editar : esto cambia de su rama local actual (posiblemente llamado
localBranch
) aguas arriba aorigin/remoteBranchToBeCreated
. Para arreglar eso, simplemente escriba:Entonces su sucursal local actual ahora rastrea
origin/localBranch
.fuente
error: src refspec <new branch> does not match any.
cuando intento esto.Supongo que ya has clonado un proyecto como:
Luego, en su copia local, cree una nueva sucursal y compruébelo:
Suponiendo que creó un "git bare --init" en su servidor y creó el myapp.git, debe:
Después de eso, los usuarios deberían poder
NOTA: Supongo que tiene su servidor en funcionamiento. Si no es así, no funcionará. Un buen tutorial está aquí .
ADICIONAL
Agregar una rama remota:
Comprueba si todo está bien (busca el origen y enumera las ramas remotas):
Cree una sucursal local y rastree la sucursal remota:
Actualiza todo:
fuente
git remote add origin
hace que la sucursal local sea rastreable? ¿Es ese el comando de teclado aquí?git remote add origin
solo registra un nuevo repositorio remoto. Es solo un paso necesario antes de llevar su sucursal a ese repositorio remoto (si no desea escribir la dirección completa cada vez)editar Desfasado, solo use
git push -u origin $BRANCHNAME
Úselo
git publish-branch
de las diversas herramientas Git de William ( repositorio y clon gitorios ).OK, no Ruby, entonces, ¡ignorando las salvaguardas! - tome las últimas tres líneas del guión y cree un guión bash
git-publish-branch
:Luego
git-publish-branch REMOTENAME BRANCHNAME
, ejecute , donde REMOTENAME suele ser el origen (puede modificar el script para que tenga su origen como predeterminado, etc.)fuente
git push
ygit config
ordena. Usé el código del script para editar mi respuesta. Puede usar esta información para crear un pequeño script de shell que lo empuje por usted.Para crear una nueva rama ramificándose desde una rama existente
y luego empuje esta nueva rama al repositorio usando
Esto crea y empuja todos los commits locales a una rama remota recién creada
origin/<new_branch>
fuente
Para la versión de GitLab anterior a 1.7, use:
(name_branch, ex:
master
)Para enviarlo al repositorio remoto, haga lo siguiente:
(name_new_branch, ejemplo:
feature
)fuente
Hice un alias para que cada vez que cree una nueva rama, empuje y rastree la rama remota en consecuencia. Puse el siguiente fragmento en el
.bash_profile
archivo:Uso : simplemente escriba
gcb thuy/do-sth-kool
conthuy/do-sth-kool
mi nuevo nombre de sucursal.fuente
Basándome ligeramente en las respuestas aquí, he terminado este proceso como un simple script Bash, que por supuesto podría usarse también como un alias de Git.
La adición importante para mí es que esto me lleva a ejecutar pruebas unitarias antes de confirmar y pasa el nombre de la sucursal actual de forma predeterminada.
git_push_new_branch.sh
fuente
Puedes hacerlo en 2 pasos:
1. Use
checkout
para crear la rama local:Trabaja con tu sucursal como quieras.
2. Use el
push
comando para crear automáticamente la rama y enviar el código al repositorio remoto:fuente
Para mayor flexibilidad, puede usar un comando Git personalizado . Por ejemplo, cree el siguiente script de Python en algún lugar
$PATH
debajo del nombregit-publish
y hágalo ejecutable:Luego
git publish -h
le mostrará información de uso:fuente