[[oktatas:programozás:verziókontroll:git|< Git]] ====== git diff ====== * **Szerző:** Sallai András * Copyright (c) 2021, Sallai András * Szerkesztve: 2021, 2023 * Licenc: [[https://creativecommons.org/licenses/by-sa/4.0/|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')