¿Cómo "pasar" de una sucursal local a otra?

231

Esto suena muy simple, pero no puedo entenderlo. Hice una rama experimental hace un tiempo, y ahora me gustaría incorporar todos los cambios que ocurrieron en master desde que lo hice. Todo esto es local. Quiero pasar del maestro local al local my_branch, pero no puedo hacerlo. Esto no parece funcionar, diciéndome que master no es un repositorio git:

git pull master
Phil Kulak
fuente
Ver también stackoverflow.com/questions/3124601/…
Michael Freidgeim

Respuestas:

339

tienes que decirle a git de dónde sacar, en este caso del directorio / repositorio actual:

git pull . master

pero cuando trabaja localmente, generalmente solo llama a merge (pull llama internamente merge):

git merge master
knittl
fuente
1
Me gusta git pull . masterporque creo que también comprobará si hay algo nuevo desde el origen. ¿Es esto cierto?
Josiah Yoder
1
@JosiahYoder no, pull .específicamente le dice a Git que retire del repositorio ubicado en .(es decir, el directorio / repositorio actual). origines solo una abreviatura de "cualquier ubicación de repositorio definida en el .git/configarchivo (generalmente configurada automáticamente al clonar un repositorio)
knittl
1
Oh! Entonces, git pull . master¿sacaría del repositorio local en lugar del origen? (¡¿No hay que buscar el origen ?!) ¿Hay alguna ventaja de git pull . mastermás de git merge masterentonces?
Josiah Yoder
2
@JosiahYoder sí exactamente, se "extraería" del repositorio local en lugar del repositorio de origen. No se realiza la recuperación (porque todo desde el repositorio local ya está aquí). No hay ventaja: ambos comandos hacen más o menos lo mismo. Si está avanzando rápidamente, puede usar push . origin/branch:branch(no extraer) para actualizar las sucursales locales, sin verificarlas primero.
knittl
Te alabo ¡Por el poder de Greyskull!
R Claven
45

Lo que estás buscando es fusionar.

git merge master

Con pullusted recupera los cambios de un repositorio remoto y los combina en la rama actual.

KingCrunch
fuente
38

Publicación bastante antigua, pero podría ayudar a alguien nuevo en git.

Yo iré con

git rebase master
  • historial de registro mucho más limpio y sin confirmaciones de fusión (si se hace correctamente)
  • necesita lidiar con conflictos, pero no es tan difícil.
Lukino
fuente
1
Ciertamente, hay muchas formas para que un equipo de desarrollo administre sus procesos de ramificación. Personalmente, he estado usando git durante 8 años, y nunca he tenido que hacer una nueva versión. Siempre uso fusionar, y siempre ha satisfecho mis necesidades. Seguramente con rebase, al igual que la fusión, pueden surgir escenarios en los que git no pueda decidir automáticamente el resultado correcto de "fusionar" dos conjuntos de cambios. En cuanto al punto que hizo sobre un historial de confirmación "más limpio". Personalmente, mi preferencia es mantener todo el historial de confirmación, en caso de que alguna vez necesite hacer algo de "arqueología de confirmación" (como suele suceder)
usuario3441604
-1

Si está buscando un nuevo tirón de otra sucursal, como local para dominar, puede seguir esto.

git commit -m "Initial Commit"
git add .
git pull --rebase git_url
git push origin master
theRana
fuente