sinonimo significado que ejemplos difiero difiere diferir diferio diferimos dices conjugacion git git-diff

git - significado - difiero de lo que dices



¿Cómo difiero el mismo archivo entre dos confirmaciones diferentes en la misma rama? (10)

En Git, ¿cómo podría comparar el mismo archivo entre dos confirmaciones diferentes (no contiguas) en la misma rama (maestra, por ejemplo)?

Estoy buscando una función de comparación como la de Visual SourceSafe (VSS) o Team Foundation Server (TFS). ¿Es posible en Git?


Aquí hay un script de perl que imprime los comandos de git diff para un archivo dado como se encuentra en un comando de registro de git.

p.ej

git log pom.xml | perl gldiff.pl 3 pom.xml

Rendimientos:

git diff 5cc287:pom.xml e8e420:pom.xml git diff 3aa914:pom.xml 7476e1:pom.xml git diff 422bfd:pom.xml f92ad8:pom.xml

que luego se podría cortar N pegado en una sesión de ventana de shell o canalizado a / bin / sh.

Notas:

  1. el número (3 en este caso) especifica cuántas líneas imprimir
  2. el archivo (pom.xml en este caso) debe coincidir en ambos lugares (puede ajustarlo en una función de shell para proporcionar el mismo archivo en ambos lugares) o ponerlo en un directorio bin como un script de shell

Código:

# gldiff.pl use strict; my $max = shift; my $file = shift; die "not a number" unless $max =~ m//d+/; die "not a file" unless -f $file; my $count; my @lines; while (<>) { chomp; next unless s/^commit/s+(.*)//; my $commit = $1; push @lines, sprintf "%s:%s", substr($commit,0,6),$file; if (@lines == 2) { printf "git diff %s %s/n", @lines; @lines = (); } last if ++$count >= $max *2; }


Si desea hacer una diferencia con más de un archivo, con el método especificado por @mipadi:

Por ejemplo, diferencia entre HEAD y tu master , para encontrar todos los archivos .coffee :

git diff master..HEAD -- `find your_search_folder/ -name ''*.coffee''`

Esto buscará recursivamente su your_search_folder/ para todos los archivos .coffee y hará una diferencia entre ellos y sus versiones master .


Si desea una comparación visual simple en Windows, como la que puede obtener en VSS o TFS, intente esto:

  • Haga clic derecho en el archivo en el Explorador de archivos
  • seleccione ''Git History''

Nota: Después de actualizar a Windows 10, he perdido las opciones del menú contextual de git. Sin embargo, puede lograr lo mismo usando ''gitk'' o ''gitk filename'' en una ventana de comando.

Si ha hecho clic en ''Historial de Git'', se iniciará la herramienta GUI de Git, con un historial del archivo en el panel superior izquierdo. Seleccione una de las versiones que le gustaría comparar. Luego haga clic derecho en la segunda versión y elija

Diff esto -> seleccionado

o

Diff seleccionado -> este

Las diferencias codificadas por colores aparecerán en el panel inferior izquierdo.


Si desea ver todos los cambios en el archivo entre los dos confirmaciones en una base de confirmación por confirmación, también puede hacer

git log -u $start_commit..$end_commit -- path/to/file


Si ha configurado el "diftool" puede utilizar

git difftool revision_1:file_1 revision_2:file_2

Ejemplo: comparar un archivo de su último compromiso con su confirmación anterior en la misma rama: suponiendo que si está en la carpeta raíz del proyecto

$git difftool HEAD:src/main/java/com.xyz.test/MyApp.java HEAD^:src/main/java/com.xyz.test/MyApp.java

Debe tener las siguientes entradas en su archivo ~ / .gitconfig o en el archivo project / .git / config. Instale el p4merge [Esta es mi herramienta preferida de combinación y fusión]

[merge] tool = p4merge keepBackup = false [diff] tool = p4merge keepBackup = false [difftool "p4merge"] path = C:/Program Files (x86)/Perforce/p4merge.exe [mergetool] keepBackup = false [difftool] keepBackup = false [mergetool "p4merge"] path = C:/Program Files (x86)/Perforce/p4merge.exe cmd = p4merge.exe /"$BASE/" /"$LOCAL/" /"$REMOTE/" /"$MERGED/"


Si tiene varios archivos o directorios y desea comparar confirmaciones no continuas, puede hacer esto:

Hacer una rama temporal

git checkout -b revision

Rebobinar al primer objetivo de compromiso

git reset --hard <commit_target>

Cereza recogiendo en los comprometidos interesados.

git cherry-pick <commit_interested> ...

Aplicar dif

git diff <commit-target>^

Cuando termines

git branch -D revision


Solo otra forma de usar la genialidad de Git ...

git difftool HEAD HEAD@{N} /PATH/FILE.ext


También puede comparar dos archivos diferentes en dos revisiones diferentes, como esta:

git diff < revision_1 >:< file_1 > < revision_2 >:< file_2 >


Verifique $ git log , luego copie el ID de SHA de 2 confirmaciones diferentes y luego ejecute el comando git diff con esos identificadores, por ejemplo:

$ git diff (sha-id-one) (sha-id-two)


De la página del git-diff :

git diff [--options] <commit> <commit> [--] [<path>...]

Por ejemplo, para ver la diferencia de un archivo "main.c" entre ahora y dos confirmaciones, aquí hay tres comandos equivalentes:

$ git diff HEAD^^ HEAD main.c $ git diff HEAD^^..HEAD -- main.c $ git diff HEAD~2 HEAD -- main.c