Tartalomjegyzék
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.
- 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')