¿Es posible?
Básicamente, hay un repositorio remoto del que extraigo usando solo:
git pull
Ahora, me gustaría ver una vista previa de lo que cambiaría este tirón (una diferencia) sin tocar nada de mi lado. La razón es que lo que estoy tirando podría no ser "bueno" y quiero que alguien más lo arregle antes de hacer que mi repositorio esté "sucio".
git
version-control
Milan Babuškov
fuente
fuente
Respuestas:
Después de hacer una
git fetch
, haga unagit log HEAD..origin/master
para mostrar las entradas de registro entre su última confirmación común y la rama maestra del origen. Para mostrar los diferenciales, usegit log -p HEAD..origin/master
para mostrar cada parche ogit diff HEAD...origin/master
(tres puntos, no dos) para mostrar un solo diferencial.Normalmente no hay necesidad de deshacer una búsqueda, porque hacer una búsqueda solo actualiza las ramas remotas y ninguna de sus ramas. Si no está preparado para hacer una extracción y combinar todas las confirmaciones remotas, puede usar
git cherry-pick
para aceptar solo las confirmaciones remotas específicas que desee. Más tarde, cuando esté listo para obtener todo,git pull
se fusionará en el resto de los commits.Actualización: no estoy completamente seguro de por qué quieres evitar el uso de git fetch. Todo lo que hace git fetch es actualizar su copia local de las ramas remotas. Esta copia local no tiene nada que ver con ninguna de sus sucursales, y no tiene nada que ver con los cambios locales no confirmados. He oído hablar de personas que ejecutan git fetch en un trabajo cron porque es muy seguro. (Sin embargo, normalmente no recomendaría hacerlo).
fuente
git diff ...@{u}
es lo mismo quegit diff HEAD...origin/master
si origin / master es la rama aguas arribaCreo que git fetch es lo que estás buscando.
Extraerá los cambios y los objetos sin comprometerlos con el índice de su repositorio local.
Pueden fusionarse más tarde con git merge .
Página de hombre
Editar: Explicación adicional
Directamente desde el git- SVN Crash Course enlace
La lectura de la página del manual honestamente le dará la mejor comprensión de las opciones y cómo usarla.
Solo estoy tratando de hacer esto con ejemplos y memoria, actualmente no tengo un cuadro para probar. Deberías mirar:
Una recuperación se puede deshacer con git reset --hard ( enlace ), sin embargo, todos los cambios no confirmados en su árbol se perderán, así como los cambios que haya obtenido.
fuente
git reset --soft
o--mixed
? Verifique la página de manual.Puede buscar desde un repositorio remoto, ver las diferencias y luego extraer o fusionar.
Este es un ejemplo para un repositorio remoto llamado
origin
y una rama llamadamaster
seguimiento de la rama remotaorigin/master
:fuente
Creé un alias de git personalizado para hacer eso por mí:
con eso puedes hacer esto:
Esto le dará una manera agradable y fácil de previsualizar los cambios antes de hacer un
merge
.fuente
Utilizo estos dos comandos y puedo ver los archivos para cambiar.
Primero ejecutando git fetch , da una salida como esta (parte de la salida):
Esta operación nos da dos ID de confirmación, la primera es la anterior y la segunda será la nueva.
Luego compare estos dos commits usando git diff
Este comando enumerará los archivos que se actualizarán:
Por ejemplo, app / controller / xxxx.php y app / view / aaaa.php se actualizarán.
La comparación de dos confirmaciones usando git diff imprime todos los archivos actualizados con líneas cambiadas, pero con grep busca y obtiene solo las líneas que contienen diff --git de la salida.
fuente
Puede que llegue tarde a la fiesta, pero esto es algo que me molestó durante demasiado tiempo. En mi experiencia, preferiría ver qué cambios están pendientes que actualizar mi copia de trabajo y tratar con esos cambios.
Esto va en el
~/.gitconfig
archivo:Obtiene la rama actual, luego hace una diferencia entre la copia de trabajo y esta rama obtenida. Por lo tanto, solo debería ver los cambios que vendrían con
git pull
.fuente
HEAD..@{u}
? Es más simple y no requiere que el control remoto se llame "origen" o que su rama se llame igual que en el control remoto.git pull
si no le gusta lo que está haciendo ... así que no estoy seguro de cuál es el caso de uso para esto.git pull
tarde. También creo que de eso se trataba la pregunta de op.Si no desea que git-fetch actualice su .git local, simplemente copie su repositorio local en un directorio temporal y realice una extracción allí. Aquí hay una mano corta:
Ex.:
fuente
¿Qué hay de clonar el repositorio en otro lugar y hacer git log tanto en el pago real como en el clon nuevo para ver si obtuviste lo mismo?
fuente