Hoe vermeld ik alle bestanden in een commit?

Ik ben op zoek naar een Simple Git-opdracht die een mooi geformatteerde lijst van alle bestanden biedt die deel uitmaakten van de commit van een hash (SHA-1), zonder externe informatie.

Ik heb geprobeerd:

git show a303aa90779efdd2f6b9d90693e2cbbbe4613c1d

Hoewel het de bestanden weergeeft, bevat deze ook ongewenste diffinformatie voor elk.

Is er nog een git-opdracht die alleen de lijst oplevert die ik wil, zodat ik het kan vermijden van het git showOutput?


Antwoord 1, Autoriteit 100%

Geprefereerde manier (Omdat het een sanitair is -opdracht; bedoeld om programmatisch te zijn):

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

Nog een manier (minder de voorkeur voor scripts, omdat het een porselein -opdracht is; bedoeld om door de gebruiker te zijn)

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

  • De --no-commit-idonderdrukt de COMMIT ID-uitvoer.
  • De --prettyargument Specificeert een lege indelingsstring om de Cruft aan het begin te vermijden.
  • De --name-onlyArgument toont alleen de bestandsnamen die werden getroffen (bedankt Hank). Gebruik in plaats daarvan --name-status, als u wilt zien wat er met elk bestand is gebeurd (D Eleted, M ODIFICEERD, A Dded)
  • De -rargument is om te recURSEN in sub-bomen

Antwoord 2, Autoriteit 7%

Als u de lijst met gewijzigde bestanden wilt ontvangen:

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

Als u de lijst met alle bestanden in een commit wilt ontvangen, kunt u

gebruiken

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

Antwoord 3, Autoriteit 6%

Ik neem gewoon aan dat gitkniet gewenst is voor dit. Probeer in dat geval git show --name-only <sha>.


Antwoord 4, Autoriteit 5%

Ik gebruik persoonlijk de combinatie van – stat en – Oneine met de show opdracht:

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

Als u de toevoeg- / verwijderingsstatistieken niet leuk / wilt / wilt, kunt u – stat vervangen door -Name-Only-Only

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

Antwoord 5, Autoriteit 2%

U kunt ook

doen

git log --name-only

en u kunt door verschillende commits bladeren, berichten en de gewijzigde bestanden plegen.

Type q om uw prompt terug te krijgen.


Antwoord 6, Autoriteit 2%

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

gebruikt

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

of as Ethan wijst :

git diff --name-only START_COMMIT..END_COMMIT

Gebruik --name-statusbevat ook de wijziging (toegevoegd, gewijzigd, verwijderd, enz.) Naast elk bestand:

git diff --name-status START_COMMIT..END_COMMIT

Antwoord 7, autoriteit 2%

Eenvoudigste vorm:

git show --stat (hash)

Dat is makkelijker te onthouden en geeft je alle informatie die je nodig hebt.

Als je echt alleen de namen van de bestanden wilt, kun je de optie --name-onlytoevoegen.

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


Antwoord 8

Ik gebruik de gewijzigdealiasvrij 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 nuttig kunnen zijn:

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

Antwoord 9

Gebruik

git log --name-status

Dit zal je de commit id, het bericht, de gewijzigde bestanden laten zien en of het is gewijzigd, aangemaakt, toegevoegd of verwijderd. Een beetje een alles-in-één commando.


Antwoord 10

Het standaard commando git diffgebruiken(ook goed voor scripting):

git diff --name-only <sha>^ <sha>

Als u ook de status van de gewijzigde bestanden wilt:

git diff --name-status <sha>^ <sha>

Dit werkt goed met merge commits.


Antwoord 11

Probeer deze opdracht voor naam en wijzig het aantal regels

git show --stat <commit-hash>

Alleen bestandsnamen weergeven

git show --stat --name-only  <commit-hash>

Probeer deze opdracht om de laatste commit-hash te krijgen:

git log -1

Laatste vastlegging met naam van showbestanden en bestandsstatus wijzigen, maken of verwijderen:

git log -1 --oneline --name-status <commit-hash>

Of voor iedereen

git log

Voor meer geavanceerde git log-informatie, lees deze artikelen:


Antwoord 12

$ git log 88ee8^..88ee8 --name-only --pretty="format:"

Antwoord 13

OK, er zijn een aantal manieren om alle bestanden in een bepaalde commit te tonen…

Om de informatie te verminderen en alleen namen weer te gevenvan de bestanden die zijn vastgelegd, kunt u eenvoudig --name-onlyof --name-statusvlag… Deze vlaggen laten je alleen de bestandsnamen zien die verschillen van eerdere commits zoals je wilt…

Je kunt dus git diffdoen gevolgd door --name-only, met twee commit-hashes na <sha0> <sha1>. Iets als hieronder:

git diff --name-only 5f12f15 kag9f02

Ik heb ook de onderstaande afbeelding gemaakt om alle stappen te laten zien die in deze situaties moeten worden doorlopen:


Antwoord 14

Er is ook git whatchanged, wat lager is dan git log

NAME
       git-whatchanged - Show logs with difference each commit introduces

Het geeft de commit-samenvatting weer met een lijst van bestanden eronder met hun modi en of ze zijn toegevoegd(A), verwijderd(D) of gewijzigd(M);

$ git whatchanged f31a441398fb7834fde24c5b0c2974182a431363

Zou zoiets geven als:

commit f31a441398fb7834fde24c5b0c2974182a431363
Author: xx <[email protected]>
Date:   Tue Sep 29 17:23:22 2015 +0200
    added fb skd and XLForm
:000000 100644 0000000... 90a20d7... A  Pods/Bolts/Bolts/Common/BFCancellationToken.h
:000000 100644 0000000... b5006d0... A  Pods/Bolts/Bolts/Common/BFCancellationToken.m
:000000 100644 0000000... 3e7b711... A  Pods/Bolts/Bolts/Common/BFCancellationTokenRegistration.h
:000000 100644 0000000... 9c8a7ae... A  Pods/Bolts/Bolts/Common/BFCancellationTokenRegistration.m
:000000 100644 0000000... bd6e7a1... A  Pods/Bolts/Bolts/Common/BFCancellationTokenSource.h
:000000 100644 0000000... 947f725... A  Pods/Bolts/Bolts/Common/BFCancellationTokenSource.m
:000000 100644 0000000... cf7dcdf... A  Pods/Bolts/Bolts/Common/BFDefines.h
:000000 100644 0000000... 02af9ba... A  Pods/Bolts/Bolts/Common/BFExecutor.h
:000000 100644 0000000... 292e27c... A  Pods/Bolts/Bolts/Common/BFExecutor.m
:000000 100644 0000000... 827071d... A  Pods/Bolts/Bolts/Common/BFTask.h
...

Ik weet dat dit antwoord niet echt overeenkomt met “zonder overbodige informatie.”, maar ik denk toch dat deze lijst nuttiger is dan alleen de bestandsnamen.


Antwoord 15

Ik gebruik dit om de lijst met gewijzigde bestanden tussen twee wijzigingensets te krijgen:

git diff --name-status <SHA1> <SHA2> | cut -f2

Antwoord 16

Ik gebruik graag

git show --stat <SHA1>^..<SHA2>

Antwoord 17

Gebruik een eenvoudige opdracht One-Line, als u wilt dat de lijst met bestanden in de laatste commit wordt gewijzigd:

git diff HEAD~1 --name-only

Antwoord 18

Ik vind dit leuk:

git diff --name-status <SHA1> <SHA1>^

Antwoord 19

Ik heb hier een perfect antwoord gevonden:

git show --name-status --oneline <commit-hash>

zodat ik

kan weten

  • Welke bestanden zijn net aangepast (m)

  • Welke bestanden zijn nieuw toegevoegd (A)

  • Welke bestanden zijn verwijderd (d)


Antwoord 20

Geef het logboek weer.

COMMITKan leeg zijn (“”), de sha- 1 hash of een verkorte versie van de SHA-1 HASH.

git log COMMIT -1 --name-only

Hiermee wordt alleen de bestanden weergegeven en is erg handig voor verdere verwerking.

git log COMMIT -1 --name-only --pretty=format:"" | grep "[^\s]"

Antwoord 21

Lijst de bestanden die zijn gewijzigd in een commit:

git diff --name-only SHA1^ SHA1

Dit toont geen log-berichten, extra newlines of een andere rommel. Dit werkt voor elke commit, niet alleen de huidige.


Antwoord 22

Alleen de bestandslijst (niet eens commit):

git show --name-only --pretty=format:

b.g. Open alle gewijzigde bestanden in uw editor:

git show --name-only --pretty=format: | xargs "$EDITOR"

Antwoord 23

Een combinatie van “git show --stat” (bedankt Ryan) en een paar SED-opdrachten moeten de gegevens voor u inkorten:

git show --stat <SHA1> | sed -n "/ [\w]\*|/p" | sed "s/|.\*$//"

Dat produceert alleen de lijst met gewijzigde bestanden.


Antwoord 24

Er is een eenvoudige truc om als een bestandsvermelding te bekijken. Voeg gewoon :na de hash:

git show 9d3a52c474:

U kunt dan boren,

git show 9d3a52c474:someDir/someOtherDir

Als u een bestand opneemt, krijgt u de onbewerkte versie van het bestand; Wat soms is wat je wilt als je alleen op zoek bent naar een leuke referentie- of sleutel stukjes code (Diffs kan alles maken),

git show 9d3a52c474:someDir/someOtherDir/somefile

Het enige nadeel van deze methode is dat het niet eenvoudig een boom van bestanden tonen.


Antwoord 25

Lijst alle bestanden in een boom van een commit:

git ls-tree --name-only --full-tree a21e610

Antwoord 26

Ik gebruik dit om de lijst met gewijzigde bestanden in een samenvoeging te krijgen

λ git log -m -1 --name-only --pretty="format:"
configs/anotherconfig.xml
configs/configsInRepo.xml

of

λ git log -m -1 --name-status --pretty="format:"
A       configs/anotherconfig.xml
M       configs/configsInRepo.xml

Antwoord 27

git show HEAD@{0}

werkt prima voor mij


Antwoord 28

Om de bestanden te vermelden die zijn gewijzigd op een bepaalde commit :

git show --pretty=%gd --stat <commit_id>

Om de bestanden te vermelden die zijn gewijzigd op Recent Commit :

git show --pretty=%gd --stat

Other episodes