Hay una manera de ver lo que iba a ser empujado si me hizo un git push comando?

Lo estoy imaginando es algo así como la «Archivos modificados» ficha de Github «pull request» característica. Cuando me emitir una solicitud de extracción, puedo mirar y ver lo que se obtendrá si se acepta mi solicitud de extracción: ¿Cómo puedo ver lo que estoy a punto de empujar con git?

De línea de comandos está bien, pero prefiero algún tipo de interfaz gráfica de usuario (como la imagen de arriba).

InformationsquelleAutor cmcculloh | 2010-09-03

12 Comentarios

  1. 626

    Para obtener una lista de los archivos a ser empujado, ejecutar:

    git diff --stat --cached [remote/branch]
    

    ejemplo:

    git diff --stat --cached origin/master
    

    Para el código de diff de los archivos a ser empujado, ejecutar:

    git diff [remote repo/branch]
    

    A ver archivo completo de las rutas de los archivos que va a cambiar, ejecutar:

    git diff --numstat [remote repo/branch]
    

    Si quieres ver estos diffs en una interfaz gráfica de usuario, usted tendrá que configurar git para que. Ver ¿Cómo puedo ver ‘git diff’ de salida con un visual programa diff?.

    • Tanto las variaciones de git diff –en caché sin commitish dado sólo mostrará las diferencias w/lo que respecta a la CABEZA. Creo que quiso decir git diff [–stat] –caché origin/master, suponiendo que el origen de la rama principal es master
    • sí tienes razón. Ahora me doy cuenta de que lo que en realidad responde a una manera de ver lo que será cometido, no se la empuja. Así que, sí, un camino que debe ser dado.
    • Esto no es exactamente lo que usted desea. Usted debe diff HEAD, no en el índice, en contra de origen (git diff origin/master HEAD). Distinción el índice va a dar el mismo resultado si y sólo si no tiene cambios simulados para comprometerse. Si usted tiene cambios por etapas, que van a ser incluidos en el diff, pero claramente no ser empujado, ya que no se han comprometido aún.
    • Esta respuesta debe ser editado para incluir la información en el comentario de @Jefromi git diff --stat origin/master HEAD es la respuesta correcta.
    • tiene la respuesta correcta para mí. Quiero ver lo que va a obtener empujado a partir de lo que ya he cometido, no lo va a conseguir comprometido si me comprometo con todo lo que he cambiado. git diff --cached [remote/branch] hace el truco 🙂
    • git diff muestra «diff», no lo va a ser empujado.
    • Creo que hemos perdido el --stat opción en git diff.
    • diff –stat origin/master muestra diff. Si usted git push NO se garantiza que la lista de archivos producidos por los anteriores git diff es lo que va a ser pushed. Respuesta ignora por completo el concepto de cometer.
    • ah, te refieres a lo que Jefromi ya ha dicho con distinción contra la CABEZA un par de comentarios más arriba. Sí, eso es cierto.
    • puedo probar todas las variaciones de diff se menciona aquí, y ninguno produce ninguna salida. pero push --dry-run muestran 06b7b81..ffa79a8 master -> master
    • Cómo puede esta respuesta debe ser aceptado? Incluso no hace lo que su descripción dice, ni hacer lo que se les pide. git diff sin un alcance siempre diffs su actual directorio de trabajo para algo, con caché hay diferencias, al menos, lo que será confirmado que la próxima vez, pero nunca lo que tiene que ser empujado. push --dry-run de Brian es el único utilizable respuesta hasta el momento, otra sería git diff --stat HEAD origin/master
    • git diff –caché de la CABEZA (todos los cambios de archivo por archivo) y git diff –stat CABEZA (más abreviado – qué se siente al hacer git pull con el verde de los puntos a favor y en rojo los contras y el resumen en la parte inferior) funciona mejor para mí para ver lo que estaría comprometido. (También, git diff --cached creo implica HEAD al final – al menos a mí me funciona. Usted también puede hacer git diff --cached file. git diff --stat, sin embargo, no no parece funcionar.)
    • en lugar de escribir origin/master, usted puede usar @{u} por ejemplo git diff @{u} o git diff CABEZA @{u} tenga en cuenta que esto sólo funciona si usted tiene una aguas arriba de seguimiento de rama ya creado y vinculados. Me resulta útil cuando tengo un montón de ramas y un montón de mandos a distancia, de modo que no tengo que pensar acerca de lo que está ligado donde.
    • Muy valiosa, muchas gracias!
    • Se siente como un idiota sabio recordar que el comando cuando debería ser `git viewfiles’ o algo que pueda recordar
    • Usted puede utilizar git status para determinar el valor de [remote/branch]
    • Este enfoque no se conecta al control remoto de repos (simplemente compara con origin/branch), por lo que puede no reflejar todos los envíos que han sido empujados a control remoto. Ejecutar siempre git pull origin primero para asegurarse de que origin/branch es hasta la fecha. (Por el bien de la explicación, si la misma se compromete fueron empujados a remoto desde otra rama, pero no bajó a su trabajo repo, es mostrar, pero ellos no necesitan ser empujados. O peor aún, si se produce un conflicto de cambios en el control remoto repo, este no darle ninguna advertencia acerca de ellos.)

  2. 186

    Siempre hay dry-run:

    git push --dry-run
    

    Que va a hacer todo, excepto para el envío de los datos.

    Si quieres una vista gráfica tienes un montón de opciones.

    Tig y la gitk secuencia de comandos que vienen con git, tanto mostrar la rama actual de su copia local y la rama del control remoto o de origen.

    ¿Cómo puedo ver lo que estoy a punto de empujar con git?

    Por lo que cualquier compromete a hacer después de el origen son los commits que será empujado.

    Abrir gitk de shell, mientras que en la rama usted quiere empujar escribiendo gitk&, y luego a ver la diferencia entre lo que está en el mando a distancia y lo que están a punto de inserción para el control remoto, seleccione su local unpushed confirmar y haga clic en el mando a distancia y seleccione «Diff este -> selecciona»:
    ¿Cómo puedo ver lo que estoy a punto de empujar con git?

    • git push –dry-run no me muestran nada parecido a lo que estoy esperando para ver. gitk está más cerca, pero no me muestra el total de todos los cambios que va a ser empujado. Así que si estoy empujando 6 compromete a control remoto, quiero ver la suma total de lo que va a ser empujado. No me importa lo que cada commit individualmente, porque un cambio puede ser completamente negados por el siguiente.
    • Si usted necesita un diff de lo que va a ser empujado, hacer git diff --stat HEAD origin/master o git diff HEAD origin/master. Importante es el JEFE, de lo contrario se incluyen uncommited cambios en su diff
    • ¿Hay alguna razón por la que git no lo hace automáticamente un funcionamiento en seco antes de que se intenta enviar datos a un servidor remoto? Si usted está haciendo una gran cantidad de datos, se sube todos los datos y, a continuación, muestra errores después. Has desperdiciado el tiempo y el ancho de banda de subida de datos que ahora tienes que volver a cargar. Esto parece extraño comportamiento.
    • El problema con git push --dry-run es que aún requiere permiso de escritura en el mando a distancia. Así que si usted tiene un clon sin permiso para empujar arriba, pero le gustaría ver lo que su local unpushed cambios, --dry-run no hacerlo.
    • Esta es una buena solución, pero debe tenerse en cuenta que se requiere para la conexión remota (incluyendo la introducción de la clave SSH si es aplicable). Si sólo desea ver la diferencia entre branch y origin/branch, me gustaría ir con Ionuț G. Stan respuesta, ya que en realidad no requiere de conexión para el control remoto de repos. Esto puede ser bueno o malo, dependiendo de lo que usted necesita.
  3. 158

    A simplemente una lista de los compromete a la espera de ser empujado:
    (este es el que usted va a recordar)

    git cherry -v
    

    Mostrar la confirmación de los sujetos junto a la SHA1s.

    • Una cosa interesante es que se puede especificar un mando a distancia para comparar como: git cherry -v heroku/remote en caso de que usted mantenga su código en más de un control remoto.
    • ¿Cuál es la mejor complementarios de comandos que nos permite en realidad se correlacionan las diferencias de estos compromete a los contenidos?
    • Este comando es muy agradable, pero me gustaría más detalles, como los nombres de los archivos a ser cambiado durante el empuje.
  4. 20

    Es probable que desee ejecutar git difftool origin/master.... debe mostrar el diff unificado de lo que está en su rama actual que no está en el origen/master aún y se muestra en la gráfica de la herramienta de comparación de su elección. Para estar más arriba-hasta la fecha, ejecutar git fetch primera.

    • Excelente! Gracias!
    • git difftool -d origin/master, Tengo mi difftool conjunto se funden de modo que las grandes obras, thx!
    • git difftool -d es la forma mejor, gracias Acuario de Energía. El único problema es que no detecta los archivos movidos y les muestra como eliminado y añadido en su lugar.
  5. 8

    Una manera de comparar su versión local antes de presionar en el control remoto repo (tipo de inserción en la marcha en seco):

    Uso TortoiseGit:

    Haga clic derecho en la carpeta raíz del proyecto > TortoiseGit > Diff con la versión anterior >

    para la Versión 2 elija refs/remotes/origin/master

  6. 7

    Intentar git diff origin/master..master (suponiendo que origin/master es su ascendente). A diferencia de git push --dry-run, esto todavía funciona incluso si usted no tiene permiso de escritura para el upstream.

  7. 5

    Uso git gui, allí se puede ver una lista de lo que ha cambiado en su real cometer. También puede utilizar gitk que proporciona una interfaz sencilla para reflogs. Basta con comparar entre remotes/... y master a ver, ¿qué va a ser empujado. Proporciona una interfaz similar a la de la captura de pantalla.

    Ambos programas están incluidos en git.

    • No veo ningún lugar en git gui que muestra todo lo que ha sido cometido, pero no se la empuja.
    • En git gui se puede ver, lo que está modificado, pero no confirmada. En gik (a Través de gitk --all obtener una lista completa de todos los comentarios. Ahora usted puede comparar el estado actual de su dev-sucursal con su mando a distancia para empujar.
  8. 4

    Para ver que archivos se ha cambiado y ver el código real de los cambios con respecto a la master rama puede utilizar:

    git diff --stat --patch origin master
    

    NOTA: Si usted usa cualquiera de los Intellij IDEs entonces usted puede hacer clic derecho en el proyecto de nivel superior, seleccione Git > Comparar con la rama > y elegir el origen que desee por ejemplo,origin/master. En el árbol de archivos que aparecerán puede hacer doble clic en los archivos para ver una visual de las diferencias. A diferencia de la opción de línea de comandos por encima de usted puede editar sus versiones locales del diff de la ventana.

  9. 2

    Si está utilizando Mac OS X, yo recomendaría que usted obtenga de la Torre, es un programa maravilloso que ha hecho de tratar con Git es un placer para mí. Yo ahora no tienen que recordar los comandos de terminal y ofrece una gran interfaz gráfica de usuario para la vista, el seguimiento y solución de diferencias en los archivos.

    Y no, no estoy afiliada con ellos, sólo tiene que utilizar su software y realmente me gusta.

    http://www.git-tower.com/

    • Yo uso la Torre, pero ¿cómo puede ver los archivos que se han cometido, pero no se la empuja?
    • Creo que se viene para Windows también, git-tower.com/p/windows-beta
    • Esto no contesta la pregunta.
  10. 1

    Puede hacer una lista de los commits por:

    git cherry -v
    

    Y, a continuación, compare con el siguiente comando, donde el número de ^ es igual al número de commits (en el ejemplo 2 se compromete):

    git diff HEAD^^
    
    • Es simplemente un buen uno para ver la lista de los últimos commits. Esto no dé el nombre del archivo(s). Por tanto, como respuesta utilizando seco opciones de ejecución y revisión de las opciones es la mejor. git diff –stat –parche de origen master git push –dry-run
  11. 1
    1. Si tiene permisos de escritura en remoto

    git push –dry-run

    1. Si usted no tiene permisos de escritura en remoto

    git diff –stat CABEZA remotas y sucursales

  12. 0

    Sólo añadir mi granito de arena…
    Yo quería aplicar esto al ejecutar los trabajos en un gitlab tubería en un gitlab corredor.
    La mejor manera de hacer esto es utilizar esta secuencia de comandos:

    git diff --name-only $CI_COMMIT_BEFORE_SHA $CI_COMMIT_SHA
    

    También en mi caso, quería filtrar los archivos por extensión, para ello he utilizado:

    git diff --name-only $CI_COMMIT_BEFORE_SHA $CI_COMMIT_SHA '*.py'
    

    Después de que usted puede, por ejemplo, reenviar esta lista en algún lugar, una desfibradora tal vez 😉

    Espero que esto ayude a alguien.

Dejar respuesta

Please enter your comment!
Please enter your name here