Soy nuevo en Git, así que siéntete libre de tratarme como un novato.
Nuestro flujo de trabajo es tal. Tenemos una sucursal llamada a la devque puedo llegar origin/dev. Cuando hacemos cambios, creamos una rama de desarrollo:
git checkout -b FixForBug origin / dev
Ahora tengo una rama llamada FixForBugque está rastreando (creo que esa es la palabra correcta) origin/dev. Por lo tanto, si hago una git pull, traerá nuevos cambios, lo origin/devque es genial. Ahora, cuando termino con mi solución, empujo a una rama remota llamada lo mismo.
Primero origin/develimino cualquier cambio y hago una nueva versión:
git pull --rebase
Luego empujo los cambios a una rama remota del mismo nombre:
git push origin FixForBug
Ahora, hay una rama en el servidor remoto y puedo crear una solicitud de extracción para que ese cambio sea aprobado y fusionado nuevamente en la rama de desarrollo. Yo no siempre meter nada a origin/devmí mismo. Supongo que esto es un flujo de trabajo bastante común.
La primera vez que hago un git push, funciona bien y crea la rama remota. Sin embargo, si presiono por segunda vez (digamos que durante la revisión de código, alguien señala un problema), aparece el siguiente error:
error: falló al empujar algunas referencias a ' https://github.limeade.info/Limeade/product.git ' sugerencia: Las actualizaciones fueron rechazadas porque la punta de su rama actual está detrás de la sugerencia: su contraparte remota. Integre los cambios remotos (por ejemplo, pista: 'git pull ...') antes de presionar nuevamente. pista: vea la 'Nota sobre avance rápido' en 'git push --help' para más detalles.
Sin embargo, si hago un git statusmensaje, dice que estoy por delante de origin/dev1 commit (lo cual tiene sentido) y si sigo la pista y ejecuto git pull, dice que todo está actualizado. Creo que esto se debe a que estoy presionando a una rama diferente a mi rama aguas arriba. Puedo solucionar este problema ejecutando:
git push -f origin FixForBug
En ese caso, empujará los cambios a la rama remota, diciendo (actualización forzada) y todo parece estar bien en la rama remota.
Mis preguntas:
¿Por qué se -frequiere en este escenario? Por lo general, cuando estás forzando algo, es porque estabas haciendo algo mal o al menos en contra de la práctica estándar. ¿Estoy bien haciendo esto, o arruinará algo en la rama remota o creará una molestia para quien eventualmente tenga que fusionar mis cosas en dev?
git pull origin FixForBugantes de presionar para eso? Ok, eso tiene sentido. ¡Siéntase libre de agregar como respuesta!
