repositorio - tipos de etiquetas en git
¿Cómo verificar los cambios en el repositorio Git remoto(origen)? (8)
Mi pregunta habitual es más bien "cualquier cosa nueva o modificada en repo", por lo que el cambio es útil. Lo encontré here .
git whatchanged origin/master -n 1
Pregunta
¿Cuáles son los comandos de Git para hacer el siguiente flujo de trabajo?
Guión
He clonado desde un repositorio e hice algunas confirmaciones propias a mi repositorio local. Mientras tanto, mis colegas se comprometieron con el repositorio remoto. Ahora quiero:
Compruebe si hay nuevas confirmaciones de otras personas en el repositorio remoto, es decir,
origin
?Digamos que hubo 3 confirmaciones nuevas en el repositorio remoto desde mi último intento, quisiera diferenciar las confirmaciones del repositorio remoto, es decir
HEAD~3
conHEAD~2
,HEAD~2
conHEAD~1
yHEAD~1
conHEAD
.Después de saber qué ha cambiado de forma remota, quiero obtener las últimas confirmaciones de los demás.
Mis hallazgos hasta ahora
Para el paso 2: conozco la notación de caret HEAD^
, HEAD^^
etc. y la notación tilde HEAD~2
, HEAD~3
etc.
Para el paso 3: Eso es, supongo, solo un git pull
.
Puede git fetch origin
para actualizar la rama remota en su repositorio para que apunte a la última versión. Para una diferencia contra el control remoto:
git diff origin/master
Sí, también puedes usar la notación de caret.
Si quieres aceptar los cambios remotos:
git merge origin/master
Una buena manera de tener una visión sintética de lo que está pasando en el "origen" es:
git remote show origin
Yo solo uso
git remote update
git status
Este último luego informa de cuántos compromisos detrás de mi local está. (Si alguna)
entonces
git pull origin master
para actualizar mi local :)
ya que no ha sido sugerido hasta ahora ... y lo encuentro bastante útil ...
simplemente uso
git fetch origin
para obtener los cambios remotos, y luego veo tanto los confirmaciones remotas locales como las pendientes (y sus cambios asociados) con la herramienta agradable gitk ( https://git-scm.com/docs/gitk ) que involucra el argumento --todo como
gitk --all
git status
no siempre muestra la diferencia entre el maestro y el origen / maestro incluso después de una búsqueda. Si desea que la combinación git fetch origin && git status
funcione, debe especificar la información de seguimiento entre la sucursal local y el origen:
# git branch --set-upstream-to=origin/<branch> <branch>
Para la rama maestra:
git branch --set-upstream-to=origin/master master
Una solución potencial
Gracias a la solución de Alan Haggai Alavi, se me ocurrió el siguiente flujo de trabajo potencial:
Paso 1:
git fetch origin
Paso 2:
git checkout -b localTempOfOriginMaster origin/master
git difftool HEAD~3 HEAD~2
git difftool HEAD~2 HEAD~1
git difftool HEAD~1 HEAD~0
Paso 3:
git checkout master
git branch -D localTempOfOriginMaster
git merge origin/master
git remote update && git status
Encontré esto en la answer para verificar si se necesita tirar en Git
git remote update
paragit remote update
sus refs remotos. Entonces puedes hacer una de varias cosas, tales como:
git status -uno
le dirá si la sucursal que está rastreando está adelantada, atrasada o divergida. Si no dice nada, lo local y lo remoto son lo mismo.
git show-branch *master
le mostrará las confirmaciones en todas las ramas cuyos nombres terminan en master (por ejemplo, master y origin / master).Si usa
-v
congit remote update
, puede ver qué sucursales se actualizaron, por lo que realmente no necesita más comandos.