Felhasználói eszközök

Eszközök a webhelyen


oktatas:programozas:verziokontroll:git:git_diff

< Git

git diff

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.

gyumolcsok.txt
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:

gyumolcsok.txt
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:

main.py
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:

main.py
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')
oktatas/programozas/verziokontroll/git/git_diff.txt · Utolsó módosítás: 2023/09/09 10:58 szerkesztette: admin