¿Hay alguna manera de ver qué se empujaría si hiciera un git push
comando?
Lo que estoy imaginando es algo así como la pestaña "Archivos modificados" de la función "solicitud de extracción" de Github. Cuando publico una solicitud de extracción, puedo ver y ver qué se extraerá si aceptan mi solicitud de extracción:
La línea de comando está bien, pero preferiría algún tipo de GUI (como la captura de pantalla anterior).
Respuestas:
Para obtener una lista de los archivos que se enviarán, ejecute:
ejemplo:
Para el código diff de los archivos a empujar, ejecute:
Para ver las rutas completas de los archivos que cambiarán, ejecute:
Si desea ver estas diferencias en una GUI, deberá configurar git para eso. Consulte ¿Cómo veo la salida 'git diff' con un programa visual diff? .
fuente
HEAD
, no el índice, contra origin (git diff origin/master HEAD
). Diferenciar el índice dará los mismos resultados si y solo si no tiene cambios organizados para la confirmación. Si tiene cambios organizados, se incluirán en el diff, pero claramente no se enviarán, ya que aún no se han confirmado.git diff --stat origin/master HEAD
es la respuesta correcta.git diff --cached [remote/branch]
hace el truco :)Siempre hay marcha en seco:
Hará todo excepto el envío real de los datos.
Si desea una vista más gráfica, tiene muchas opciones.
Tig y el script gitk que viene con git muestran la rama actual de su copia local y la rama del remoto u origen.
Por lo tanto, las confirmaciones que realice después del origen son las confirmaciones que se enviarán.
Abra gitk desde el shell mientras está en la rama que desea empujar escribiendo
gitk&
, luego para ver la diferencia entre lo que está en el control remoto y lo que está a punto de empujar al control remoto, seleccione su confirmación local no presionada y haga clic derecho en el control remoto y elija "Difundir esto -> seleccionado":fuente
git diff --stat HEAD origin/master
ogit diff HEAD origin/master
. Importante es la CABEZA , de lo contrario se incluyen cambios en su uncommited diffgit push --dry-run
es que todavía requiere permiso de escritura en el control remoto. Por lo tanto, si tiene un clon sin permiso para avanzar, pero le gustaría ver cuáles son sus cambios locales no acelerados,--dry-run
no lo hará.branch
yorigin/branch
, iría con la respuesta de Ionuț G. Stan, ya que en realidad no requiere conectarse al repositorio remoto. Esto puede ser bueno o malo, dependiendo de lo que necesite.Para simplemente enumerar los commits que esperan ser empujados: ( este es el que recordará )
fuente
git cherry -v heroku/remote
en caso de que mantenga su código en más de un control remoto.Probablemente quieras correr
git difftool origin/master...
. eso debería mostrar la diferencia unificada de lo que está en su rama actual que aún no está en la rama de origen / maestra y mostrarla en la herramienta de diferencia gráfica de su elección. Para estar más actualizado, ejecutegit fetch
primero.fuente
git difftool -d origin/master
, Tengo mi difftool configurado para fusionarse, así que funciona muy bien, ¡gracias!git difftool -d
es mucho mejor, gracias Aquarius Power. El único problema es que no detecta los archivos movidos y los muestra como eliminados y agregados.Una forma de comparar su versión local antes de enviarla al repositorio remoto (tipo de inserción en ejecución en seco):
Utilice TortoiseGit:
haga clic con el botón derecho en el proyecto de carpeta raíz> TortoiseGit> Diferenciar con la versión anterior>
para la Versión 2, elija
refs/remotes/origin/master
fuente
Inténtalo
git diff origin/master..master
(suponiendo que eseorigin/master
sea tu flujo ascendente). A diferencia degit push --dry-run
esto, esto aún funciona incluso si no tiene permiso de escritura en la parte superior.fuente
Use
git gui
, allí puede ver una lista de lo que cambió en su confirmación real. También puede usargitk
wich que proporciona una interfaz fácil para los registros. Simplemente compare entreremotes/...
ymaster
para ver qué se empujará. Proporciona una interfaz similar a su captura de pantalla.Ambos programas están incluidos en git.
fuente
gitk --all
usted obtiene una lista completa de todos los comentarios. Ahora puede comparar el estado real de su rama de desarrollo con su control remoto para empujar.Para ver qué archivos se cambian y ver los cambios de código reales en comparación con la
master
rama que podría usar:NOTA : Si utiliza cualquiera de los IDE de Intellij, puede hacer clic con el botón derecho en su proyecto de nivel superior, seleccionar Git > Comparar con rama > y elegir el origen que desee, por ejemplo
origin/master
. En el árbol de archivos que aparecerá, puede hacer doble clic en los archivos para ver una diferencia visual. A diferencia de la opción de línea de comandos anterior, puede editar sus versiones locales desde la ventana de diferencias.fuente
Puede enumerar las confirmaciones por:
Y luego compare con el siguiente comando donde el número de ^ es igual al número de confirmaciones (en el ejemplo, sus 2 confirmaciones):
fuente
Si está utilizando Mac OS X, le recomendaría que obtenga Tower, es un programa maravilloso que ha hecho que tratar con Git sea un placer para mí. Ahora ya tengo que recordar los comandos del terminal y ofrece una gran interfaz gráfica de usuario para ver, rastrear y resolver diferencias en los archivos.
Y no, no estoy afiliado a ellos, solo uso su software y realmente me gusta.
http://www.git-tower.com/
fuente
Solo para agregar mis dos centavos ... Quería implementar esto al ejecutar trabajos en una tubería de gitlab en un corredor de gitlab. La mejor manera de hacer esto era usar este script:
También en mi caso quería filtrar archivos por extensión, para lograr esto utilicé:
Después de eso, puede, por ejemplo, reenviar esta lista a otro lugar, un linter quizás;)
Espero que esto ayude a alguien.
fuente
fuente
Después
git commit -m "{your commit message}"
, obtendrá un hash de confirmación antes del empuje. Para que pueda ver con qué está presionandogit
ejecutando el siguiente comando:p.ej:
git diff origin/master c0e06d2
fuente