Vraag Hoe een lijst van alle bestanden in een commit?


Ik ben op zoek naar een simpele git commando dat een mooi opgemaakte lijst biedt van alle bestanden die deel uitmaakten van de commit die door een hash (SHA1) werd gegeven, zonder externe informatie.

Ik heb geprobeerd:

git show a303aa90779efdd2f6b9d90693e2cbbbe4613c1d

Hoewel het de bestanden weergeeft, bevat het ook ongewenste diff-informatie voor elk.

Is er nog een andere git commando dat alleen de lijst zal geven die ik wil, zodat ik het kan ontleden uit de git show output?


2171
2018-01-08 12:26


oorsprong


antwoorden:


Gewenste manier (omdat het een is loodgieter opdracht; bedoeld om programmatisch te zijn):

$ git diff-tree --no-commit-id --name-only -r bd61ad98
index.html
javascript/application.js
javascript/ie6.js

Een andere manier (minder voorkeur voor scripts, omdat het een porselein opdracht; bedoeld voor gebruik door de gebruiker)

$ git show --pretty="" --name-only bd61ad98    
index.html
javascript/application.js
javascript/ie6.js

  • De --no-commit-id onderdrukt de uitvoer van de commit-ID.
  • De --pretty argument geeft een lege opmaakstring aan om de rest aan het begin te voorkomen.
  • De --name-only argument toont alleen de bestandsnamen die werden beïnvloed (Thanks Hank).
  • De -r argument is om zich te herbronnen in subbomen

2853
2018-01-08 13:02



Als u een lijst met gewijzigde bestanden wilt ontvangen:

git diff-tree --no-commit-id --name-only -r <commit-ish>

Als u een lijst van alle bestanden in een commit wilt krijgen, kunt u gebruiken

git ls-tree --name-only -r <commit-ish>

189
2018-01-14 19:22



Ik ga er maar van uit gitk is hiervoor niet gewenst. Probeer in dat geval git show --name-only <sha>.


180
2018-01-08 12:34



Ik gebruik persoonlijk de combinatie van --stat en --een lijn met de laten zien opdracht:

git show --stat --oneline HEAD
git show --stat --oneline b24f5fb
git show --stat --oneline HEAD^^..HEAD

Als u de statistieken voor het toevoegen / verwijderen niet leuk / wilt, kunt u deze vervangen --stat met --name-only

git show --name-only --oneline HEAD
git show --name-only --oneline b24f5fb
git show --name-only --oneline HEAD^^..HEAD

113
2017-07-11 23:21



Onlangs moest ik alle gewijzigde bestanden tussen twee commits weergeven. Dus ik gebruikte dit (ook * nix-specifieke) commando

git show --pretty="format:" --name-only START_COMMIT..END_COMMIT | sort | uniq

Bijwerken: Of zoals Ethan hieronder aangeeft

git diff --name-only START_COMMIT..END_COMMIT

Gebruik makend van --name-status omvat ook de wijziging (toegevoegd, gewijzigd, verwijderd enz.) naast elk bestand

git diff --name-status START_COMMIT..END_COMMIT

58
2018-04-26 12:23



Je kunt ook doen

git log --name-only

en je kunt bladeren door verschillende commits, commit-berichten en de gewijzigde bestanden.

Typ q om uw prompt terug te krijgen.


56
2018-05-27 01:20



Eenvoudigste vorm:

git show --stat (hash)

Dat is gemakkelijker te onthouden en het geeft u alle informatie die u nodig hebt.

Als u echt alleen de namen van de bestanden wilt, kunt u de --name-only keuze.

git show --stat --name-only (hash)


48
2017-07-16 00:06



ik gebruik veranderd alias een vrij vaak. Om het in te stellen:

git config --global alias.changed 'show --pretty="format:" --name-only'

dan:

git changed (lists files modified in last commit)   
git changed bAda55 (lists files modified in this commit)
git changed bAda55..ff0021 (lists files modified between those commits)

Vergelijkbare commando's die handig kunnen zijn:

git log --name-status --oneline (very similar, but shows what actually happened M/C/D)
git show --name-only

45
2018-04-29 13:13