Creé una sucursal local que quiero 'empujar' corriente arriba. Hay una pregunta similar aquí en Stack Overflow sobre cómo rastrear una rama remota recién creada.
Sin embargo, mi flujo de trabajo es ligeramente diferente. Primero quiero crear una sucursal local, y solo la impulsaré en sentido ascendente cuando esté satisfecho y quiera compartir mi sucursal.
- ¿Como podría hacerlo? (mis búsquedas en google no parecían tener nada).
- ¿Cómo les diría a mis colegas que lo extraigan del repositorio ascendente?
ACTUALIZACIÓN Con Git 2.0 hay una respuesta más simple que he escrito a continuación: https://stackoverflow.com/a/27185855/109305
git
branch
git-branch
Jesper Rønn-Jensen
fuente
fuente
get fetch --all
obtiene las nuevas ramas en el lado remoto (pero sologet fetch --prune
elimina localmente las referencias a las ramas remotas eliminadas). Creo que esto debería ser configurado por ellos automáticamente, o tienes que hablarles verbalmente.Respuestas:
Primero, crea su sucursal localmente:
La rama remota se crea automáticamente cuando la empuja al servidor remoto. Entonces, cuando te sientas listo para ello, puedes hacer lo siguiente:
Donde
<remote-name>
suele serorigin
, el nombre que git le da al control remoto desde el que clonó. Sus colegas simplemente extraerían esa rama, y se creará automáticamente localmente.Sin embargo, tenga en cuenta que formalmente, el formato es:
Pero cuando omite uno, supone que ambos nombres de rama son iguales. Dicho esto, como advertencia , no cometa el error crítico de especificar solo
:<remote-branch-name>
(con los dos puntos), ¡o la rama remota se eliminará!Para que un subsiguiente
git pull
sepa qué hacer, es posible que desee utilizar:Como se describe a continuación, la
--set-upstream
opción configura una rama ascendente:fuente
git push <remote>
lo que no empujaría la rama si no está presente<remote>
.git push -u <remote-name> <branch-name>
en su lugar, para que un posteriorgit pull
sepa qué hacer.origin
, lo que significa "el servidor del que obtuve el resto de este repositorio": por lo tantogit push origin <branch-name>
.-u
opción, puede escribirgit push -u
luego en la rama, y luegogit pull
funcionará.git push -u origin <local-branch-name>
es lo que funcionó para mí.Primero, debes crear tu sucursal localmente
Después de eso, puede trabajar localmente en su sucursal, cuando esté listo para compartir la sucursal, empújela. El siguiente comando empuja la rama al origen del repositorio remoto y la rastrea
Los compañeros de equipo pueden llegar a su sucursal haciendo lo siguiente:
Puede continuar trabajando en la rama y presionando cuando lo desee sin pasar argumentos a git push (git push sin argumentos empujará al maestro a maestro remoto, your_branch local a remoto your_branch, etc.)
Los compañeros de equipo pueden empujar a su rama haciendo compromisos y luego empujar explícitamente
O rastrear la rama para evitar los argumentos para git push
fuente
Solución simple Git 2.0+:
A partir de Git 2.0, el comportamiento se ha vuelto más simple :
Puede configurar git con
push.default = current
para hacer la vida más fácil:Agregué esto, así que ahora puedo empujar una nueva sucursal hacia arriba con
-u
rastreará la rama remota del mismo nombre. Ahora con esta configuración, adivinará automáticamente la referencia remota a git push. De la documentación de git.config :Para mí, esta es una buena simplificación de mi flujo de trabajo diario de Git. La configuración se encarga del caso de uso 'habitual' en el que agrega una rama localmente y desea crearla de forma remota. Además, puedo crear fácilmente ramas locales a partir de controles remotos simplemente haciendo
git co remote_branch_name
(en lugar de usar la--set-upstream-to
bandera).Conozco esta pregunta y las respuestas aceptadas son bastante antiguas, pero el comportamiento ha cambiado, por lo que ahora existen opciones de configuración para simplificar su flujo de trabajo.
Para agregar a su configuración global de Git, ejecute esto en la línea de comando:
fuente
git push -u origin HEAD
como respondido aquí un poco más detallado (usted escribe lo que está haciendo) sin ser demasiado para escribir. Además,git push -u
sin argumentos adicionales no funcionaría para mí si la rama se creó con-t
git config --global push.default upstream && git checkout -b foo && <change a file> && git push -u
no funciona (a partir de git 2.19.1); push requiere los argumentos remotos y de ramificación.git co remote_branch_name
?Como se indicó en las respuestas anteriores,
es suficiente para empujar una sucursal local.
Sus colegas pueden extraer todas las ramas remotas (incluidas las nuevas) con este comando:
Luego, para realizar cambios en la rama, el flujo habitual:
fuente
Crear una nueva sucursal localmente basada en la rama actual:
Confirma los cambios como lo harías normalmente. Luego, empuje hacia arriba:
Este es un acceso directo para empujar la rama actual a una rama del mismo nombre
origin
y rastrearla para que no necesite especificarorigin HEAD
en el futuro.fuente
git push -u origin HEAD
. Creo que es la forma más clara.git status
primero.git remote show origin
como tercer paso solo para visualizar la nueva relación de seguimiento / seguimiento.Si desea crear una rama desde la rama actual
quieres una rama de una rama remota, puedes intentar
Si ha terminado con los cambios, puede agregar el archivo.
Luego haz un compromiso local
Cuando quieres empujar al repositorio remoto
Todos juntos serán
o si desea crear una rama desde una rama remota, por ejemplo, desarrollo
git checkout -b correcciones de errores origen / desarrollo
Puede empujar a la sucursal al repositorio remoto mediante
Cada vez que desee actualizar su sucursal desde cualquier otra sucursal, diga master .
git pull origin master
.fuente
Si realmente quiere crear una rama remota sin tener la local, puede hacerlo así:
Empuja lo que sea su CABEZA para ramificar foo que no existía en el control remoto.
fuente
Solución más fácil ... Drumm Roll ... git versión 2.10.1 (Apple Git-78)
NB: la rama que acaba de crear en su entorno local y la rama remota no existente donde está tratando de empujar, debe tener el mismo nombre .
fuente
git push -u
es mucho más fácil. Requiere que tenga una línea de configuración global, consulte stackoverflow.com/a/27185855/109305 . Lo usogit push -u
constantemente, cubre el 99% de mis casos de uso cuando trabajo.[Respuesta rápida]
Puedes hacerlo en 2 pasos:
1. Use
checkout
para crear la rama local:2. Use el
push
comando para crear automáticamente la rama y enviar el código al repositorio remoto:fuente
Primero crea la rama localmente:
Y luego para crear la rama de forma remota:
Nota: Esto funciona en las últimas versiones de git:
¡Salud!
fuente
git push
cuando su sucursal local no es rastreada por un control remoto.Empuje la rama en github:
Cuando desee comprometer algo en su sucursal, asegúrese de estar en su sucursal.
Puede ver todas las ramas creadas usando:
Que mostrará:
Agregue un nuevo control remoto para su sucursal:
Empuje los cambios de su confirmación a su rama:
Actualice su sucursal cuando se haya actualizado la sucursal original del repositorio oficial:
Luego debe aplicar para fusionar cambios, si su rama se deriva del desarrollo, debe hacer:
Eliminar una rama en su sistema de archivos local:
Para forzar la eliminación de la rama local en su sistema de archivos:
Eliminar la rama en github:
Aquí toda la información
Otro proyecto existente
fuente
Crear una sucursal local a partir de una sucursal existente (puede ser maestro / desarrollo / cualquier otra sucursal).
Empuje esto al control remoto
Aquí,
Si eliminamos los nombres de las sucursales locales y remotas, tendrá el formato
Esto empujará la sucursal local a remota y con el mismo nombre que la sucursal local nombre_ sucursal. La sucursal local también rastreará la sucursal remota.
fuente
Sé que esta pregunta está bien respondida, pero solo quería enumerar los pasos que tomo para crear una nueva rama "myNewBranch" y presionar a remoto ("origen" en mi caso) y configurar el seguimiento. Considere esta la versión "TL; DR" :)
fuente
Ahora con git, puede escribir, cuando esté en la rama correcta
git push --set-upstream origin <remote-branch-name
>y git crea para ti la rama de origen.
fuente
Solo quería agregar eso mientras:
Crea una nueva rama, también comprueba esa rama / la convierte en su rama actual. Si, por alguna razón, todo lo que quiere hacer es cortar una rama pero no convertirla en su rama actual, entonces usaría el siguiente comando:
En el primer comando, "checkout" hace que dicha rama sea su rama actual, y el "-b" significa: esta rama aún no existe, así que hágala por mí.
fuente
Cómo hacerlo a través del árbol de origen
fuente
git push -u <remote-name> <branch-name>
no funciona si la rama recién creada no se genera desde el mismo repositorio, es decir, si no ha creado la nueva rama usandogit checkout -b new_branch
, entonces esto no funcionará.Por ejemplo, había clonado dos repositorios diferentes localmente y tuve que copiar repo2 / branch1 a repo1 / y luego empujarlo también.
Este enlace me ayudó a enviar mi sucursal local (clonada desde otro repositorio) a mi repositorio remoto:
fuente
Así es como lo haces en eclipse a través de Egit.
1) Vaya a la vista "Exploración del repositorio de Git" y explique el proyecto git para el que desea crear una rama. En Brances -> Local ... seleccione la rama para la que desea crear la rama (en mi caso seleccioné master ... puede seleccionar otra rama si lo desea) ... luego haga clic derecho y haga clic en la opción Crear rama ... y seleccione la opción de pago de este proyecto y luego haga clic en el botón Finalizar.
2) Ahora, desde el explorador del proyecto, seleccione el proyecto ... haga clic derecho y luego Equipo -> Push Branch.
Se creará una nueva sucursal remota. Puede dar el nombre de la sucursal a sus colegas para que puedan extraerla.
fuente
He usado dos formas de crear sucursales
Si está utilizando TortoiseGit, siga estos pasos:
1.Create Branch usando TortoiseGit
2. Empuja la rama
3. Cambiar a una nueva sucursal
Si está utilizando el símbolo del sistema, siga estos pasos:
1.Cree una rama usando el símbolo del sistema
2. Empuja la rama
3. Cambie a una nueva rama, ya cambiará a new_branch_name; de lo contrario, puede usar
fuente
Yo uso esto y es bastante útil:
Ni siquiera necesitas el estado de git; tal vez, solo quiero asegurarme de que todo vaya bien ...
Puede tener AMBAS ramas LOCALES y REMOTAS con un solo comando.
fuente