¿Hay una opción "git pull --dry-run" en Git?

¿Existe tal cosa como git pull --dry-run para ver cómo se fusionarán las cosas antes de desordenar mi árbol de trabajo?

Ahora mismo estoy haciendo:

git fetch origin && git merge --no-commit --no-ff

No vi nada en la página de manual de 'git-pull' relacionada con esto.

Para aclarar, solo lo necesito en una secuencia de comandos Ant para la implementación para ver si hay conflictos al hacer git pull , luego salir de la compilación, fallar la implementación y dejar ese árbol de directorios igual que era antes de git pull .

55
¿Por qué habría conflictos? ¿Su script de implementación está realizando confirmaciones locales y, si es así, por qué?
agregado el autor CB Bailey, fuente

7 Respuestas

Siempre he confiado en las habilidades inherentes de Git para recuperarme si falla una fusión.

Para estimar cómo podría ocurrir la fusión, puede comenzar como lo hizo con:

$ git fetch origin branch  # Fetch changes, but don't merge
$ git diff HEAD..origin/branch # Diff your current head to the fetched commit

... personal judgement of potential merge conflicts ...

$ git merge origin/branch # merge with the fetched commit

Si las cosas no salieron según lo planeado, mire su reflog y vuelva a su estado deseado:

$ git reflog
...
abc987  [email protected]{0}: merge activity
b58aae8 [email protected]{1}: fetch origin/branch
8f3a362 [email protected]{2}: activity before the fetch
...
$ git reset --hard HEAD{2}
43
agregado
fatal: argumento ambiguo 'HEAD..origin/branch': revisión desconocida o ruta que no está en el árbol de trabajo.
agregado el autor Green, fuente
También puedes intentar esto, ya que tirar es similar a fusionar http://stackoverflow.com/questions/501407/is-there-a-git-mer‌ ge-dry-run-option
agregado el autor scireon, fuente

Tendrá que buscar primero para actualizar su origen/maestro local

git fetch origin

Entonces puedes hacer:

git diff --name-only origin/master

Enumera los archivos que han cambiado.

git diff origin/master directory_foo/file_bar.m

Enumera la línea por línea del archivo directory_foo/file_bar.m.

24
agregado
Gracias por la punta con la bandera - solo-nombre
agregado el autor cw24, fuente

Puede obtener el efecto que desea al crear una nueva rama desechable de la actual y hacer el git pull allí. Si no está satisfecho con los resultados, la rama original está intacta.

15
agregado
te refieres a git stash ?
agregado el autor WesternGun, fuente
No, git stash es completamente diferente. Eso pone tus cambios locales en otros lugares.
agregado el autor RichieHH, fuente
# fetch new commits from origin
$ git fetch

# check what are the differences and judge if safe to apply
$ git diff origin/master

# actually merge the fetched commits 
$ git pull
3
agregado
¿Por qué el downvote? Hice un git diff this-answer/top-answer y no se encontró ningún error significativo. Considere dejar un comentario cuando cometa un voto negativo: git commit -m "¿por qué votaría abajo, bla bla bla" .
agregado el autor WesternGun, fuente

Como tirar implica fusionar, me gustaría ejecutar git merge --abort si su script detecta que hubo algún conflicto y la fusión falló.

2
agregado
Si estuviera haciendo esto contra una sucursal remota (ir primero a una git fetch origin branch ) sería git merge --abort origin/branch ¿no?
agregado el autor Nick Devereaux, fuente