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 show
Output?
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-id
onderdrukt de COMMIT ID-uitvoer. - De
--pretty
argument Specificeert een lege indelingsstring om de Cruft aan het begin te vermijden. - De
--name-only
Argument 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
-r
argument 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 gitk
niet 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-status
bevat 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-only
toevoegen.
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 diff
gebruiken(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-only
of --name-status
vlag… Deze vlaggen laten je alleen de bestandsnamen zien die verschillen van eerdere commits zoals je wilt…
Je kunt dus git diff
doen 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.
COMMIT
Kan 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