< Git

git diff

Szerző: Sallai András

Copyright © 2021, Sallai András

Szerkesztve: 2021, 2023

Licenc: CC BY-SA 4.0

Web: https://szit.hu

A git diff

A változásokat a diff paranccsal tudjuk megnézni.

Például:

git diff

Így önmagában kiadva az utolsó commit óta változtatásainkat láthatjuk. Ha már staged állapotba tettünk egy fájl, ezek nem látszanak.

Ha a staged állapotú fájlokat is szeretnénk látni, használjuk --cached kapcsolót:

git diff --cached

Ha elvégezzük a commit-ot, akkor már itt sem látszik a különbség. Ebben az esetben meg kell adni annak a két commit-nak az azonosítóját, ami között szeretnénk a különbséget látni. Például:

git diff 367a 5494

Több commit közötti különbséget is megnézhetünk. Mindig az elsőként megadott commit-hoz történik a hasonlítás.

Csak fájlnevek

Ha csak azt szeretnénk látni, milyen fájlok változtak:

git diff --name-only

Szűrők

A szűrők a --diff-filter kapcsolóval állíthatók be.

ezt szeretnénk látni

A - hozzáadott fájlok

C - másolt fájlok

D - törölt fájlok

M - megváltozott

R - átnevezett fájlok

T - változott a típusa - egyszerű fájl, szimbolikus link

U - nem egybeolvasztott

X - ismeretlen

B - megszakadt a párosításuk

* - minden egyben

Kizárás - nem szeretnék a találatok között látni:

a - hozzáadott fájlok kizárva

d - törölt fájlok kizárva

Példa a törölt fájlok kizárására:

git diff --diff-filter=d HEAD^..

Változott sorok száma

Szintaxis:

git diff --stat commit1 commit2

Példák:

git diff --stat 887a e671

git --no-pager diff --stat 887a e671

git diff --stat 887a HEAD^

git --no-pager diff --stat 887a HEAD^

Forrás

man git-diff

Diff gyakorlat 01

Készítsünk egy hellodiff projektkönyvtárat, majd lépjünk be a könyvtárba.

mkdir hellodiff
cd hellodiff

Hozzunk létre egy gyumolcsok.txt nevű fájlt. Írjuk bele az alma szót.

alma

Készítsünk Git tárolót és tároljuk az állományt:

git init
git add gyumolcsok.txt
git commit -m "Kezdés"

Most adjuk az almához egy körtét:

alma körte

Mentsük el, és nézzük meg az eredményt:

git diff

A lehetséges kimenet:

$ git diff
diff --git a/gyumolcsok.txt b/gyumolcsok.txt
index 9c9acdc..2b93b27 100644
--- a/gyumolcsok.txt
+++ b/gyumolcsok.txt
@@ -1 +1,2 @@
alma
+körte

Most adjuk helyezzük újra stage állapotba a gyumolcsok.txt állományba:

git add gyumolcsok.txt

Ha újra megnézzük a különbségeket, nem találunk:

git diff

Most használjuk a --cached kapcsolót.

git diff --cached

Újra látszik a különbség:

$ git diff --cached
diff --git a/gyumolcsok.txt b/gyumolcsok.txt
index 9c9acdc..2b93b27 100644
--- a/gyumolcsok.txt
+++ b/gyumolcsok.txt
@@ -1 +1,2 @@
alma
+körte

Commit után a diff újra nem mutat semmit a --cached kapcsolóval sem. A diff nem tudja mihez képest kellene különbséget mutatnia.

Ha most megadjuk a két commit azonosítóját, akkor a különbség újra látszik. Nem szükséges a teljes azonosító megadása, adjunk meg most 4 karaktert mindkét commit-ból:

git diff 367a 5494
diff --git a/gyumolcsok.txt b/gyumolcsok.txt
index 9c9acdc..2b93b27 100644
--- a/gyumolcsok.txt
+++ b/gyumolcsok.txt
@@ -1 +1,2 @@
alma
+körte

Diff gyakorlat 02

Készítsünk egy Python programot, ami gyümölcsök neveit írja a képernyőre.

Először csak az „alma” szót írassuk ki:

print('alma')

Készítsünk Git tárolót a projektből, majd tároljunk egy pillanatképet:

git init git status -u git add . git status git commit -m "Kezdés"

Most fejlesszük tovább a programunkat. Most írassuk ki a „körte” szót is:

print('alma') print('körte')

Most futtassuk a git diff parancsot:

git diff

Lehetséges kimenet:

$ git diff diff --git a/main.py b/main.py index 88af617..8854325 100644 --- a/main.py +++ b/main.py @@ -1 +1,2 @@ print('alma') +print('körte')

Ha tároljuk a változásokat a szimpla git diff parancs hatására már nem látszanak a változások.

Ha szeretnénk ezek után megnézni a különbségeket, meg kell mondanunk, hogy mihez képest. A git log paranccsal nézzük meg a commitok azonosítóját:

git --no-pager log --oneline

Lehetséges kimenet:

git --no-pager log --oneline 138c5b6 (HEAD -> master) Körte hozzáadva 15e1a71 Kezdés

A különbséget a „Kezdés” óta szeretnénk megnézni, ezért írjuk a következőt:

git --no-pager diff 15e1

Lehetséges kimenet:

git --no-pager diff 15e1 diff --git a/main.py b/main.py index 88af617..8854325 100644 --- a/main.py +++ b/main.py @@ -1 +1,2 @@ print('alma') +print('körte')