¿Qué hace la “sincronización” de GitHub para Windows?

87

Con GitHub para Windows, puede "publicar" una rama y luego "sincronizar" esa rama con GitHub.

ingrese la descripción de la imagen aquí

¿La sincronización es básicamente una git pully git push? ¿O hay algo más? Si quisiera seguir exactamente los mismos pasos que "sincronizar" desde la línea de comandos, ¿qué debo hacer?

(No es de código abierto, o simplemente lo leería).

Jay Bazuzi
fuente

Respuestas:

52

Sync lo hace git pull --rebasey luego, si hay cambios locales, lo hace git push.

Desde aquí: http://haacked.com/archive/2012/05/21/introducing-github-for-windows.aspx#87318

Matt Rix
fuente
2
¿Qué sucede si hay un conflicto durante el paso de rebase?
Svante
26
@Svante simplemente falla y ofrece abrir un caparazón para que usted resuelva el problema. Así es como llegué a esta página :-)
Andiih
8
¿Sigue siendo cierto esto? Acabo de sincronizar y terminé con un compromiso de fusión, que nunca debería suceder si el flujo es: git pull --rebase; git push
Micah Zoltu
¿Alguna explicación para el comentario de @Michas Caldwell, creo que tiene razón?
benchuk
Puede confirmar golpear sincronización ahora hizo un git pulllugar de una git pull --rebase, creando así un adicional rama de combinación de 'maestro' de ... comprometerse.
Leo
42

Dado que la respuesta anterior fue hace más de dos años, una respuesta actualizada a esta pregunta es: debido a algunos errores con rebase , el botón "sincronizar" ya no funciona git pull --rebase. En cambio, lo hace, lo git pullque se fusionará si hay conflictos, según las notas de esta versión (consulte la versión 1.3.0).

El enlace anterior no está disponible en este momento. Aquí están las nuevas notas de la versión .

Ethan Yang
fuente
2
De hecho, eso no es del todo cierto. SOLO si una rebase no funciona, intenta hacer una fusión.
Joris Meys
El enlace de las notas de la versión está roto.
skolima
2
@JorisMeys No estoy seguro de que tu afirmación sea cierta. En mi experiencia, si hay alguna confirmación por delante de la mía en el control remoto, creará una confirmación de fusión, incluso cuando podría hacer una rebase.
Jerad Rose
@JeradRose Cuando escribí mi comentario estábamos en Github Desktop v. 2.x, y ahora estamos en 3.3 :-) Pero tienes razón, he notado lo mismo.
Joris Meys
17

"Sincronizar" sería cualquier acción necesaria para que su sucursal local coincida con su sucursal remota. Si su sucursal local tenía confirmaciones que su sucursal remota no lo hizo, entonces "sync" empujaría su sucursal. Si la rama remota estaba por delante de su rama local, entonces "sync" sacaría primero (específicamente git pull --rebase, como lo explicó Phil Haack). "Sync" es solo un atajo para lograr que el local y el remoto se reflejen entre sí.

Desde el sitio de GitHub :

The sync button turns the complex workflow of pulling and pushing into a single operation. It notifies you when there are new changes to pull down and lets you quickly share local changes.

venganza roja
fuente
No solo tira, hace "git pull --rebase", que es una diferencia crucial. Además, el orden que tiene es incorrecto, tire antes de empujar.
Andiih
2
@Andiih Mi lenguaje era generalizado y no una lista ordenada de operaciones. La orden estaba implícita. ¿Observe que digo "si la sucursal remota estaba por delante de la sucursal local"? Mi descripción también fue una cita directa del sitio de GitHub. Independientemente, la respuesta de Matt Rix es más detallada y merece ser marcada como la respuesta. Hice algunas pequeñas modificaciones para aclarar cualquier confusión en mi respuesta.
redhotvengeance
¿La sincronización de github también recupera cambios ascendentes, además del origen? Es decir, he obtenido un repositorio y tengo un clon local de la bifurcación, lo que realmente quiero son los cambios desde el origen, no solo el origen
AaronLS
1
@AaronLS GitHub para Windows solo está diseñado para funcionar con un control remoto en este momento, a saber origin. Para trabajar con varios mandos a distancia, tendrá que utilizar la línea de comandos. Se puede encontrar información relevante aquí , en "Múltiples controles remotos de Git y controles remotos que no son de GitHub".
redhotvengeance
4

Para agregar a la respuesta de @ethanyang ,

Según el alias configurado en gitconfig,

[alias]
...
sync = !git pull && git push
Ashwin Sinha
fuente
4
Solo por curiosidad, ¿qué hace el! ¿Significa en la línea anterior?
Scott Romack
@ScottRomack significa que se trata como un comando de shell: stackoverflow.com/questions/21083933/…
Nicolas Holthaus
¿GitHub Desktop ya tiene este alias configurado? Si es así, ¿dónde se encuentra esta configuración? No vi este alias en mi global .gitconfig. ¿O es solo una anulación propia?
james