Ψάχνω για μια απλή εντολή git
που να παρέχει μια όμορφα διαμορφωμένη λίστα όλων των αρχείων που ήταν μέρος της δέσμευσης, δοσμένη με έναν κατακερματισμό (SHA1), χωρίς περιττές πληροφορίες.
Δοκίμασα:
git show a303aa90779efdd2f6b9d90693e2cbbbe4613c1d
Αν και παραθέτει τα αρχεία, περιλαμβάνει επίσης ανεπιθύμητες πληροφορίες diff για το καθένα.
Υπάρχει κάποια άλλη εντολή git
που θα παρέχει μόνο τη λίστα που θέλω, έτσι ώστε να μπορώ να αποφύγω να την αναλύσω από την έξοδο git show
;
Προτιμώμενος τρόπος (επειδή πρόκειται για μια εντολή υδραυλικών εγκαταστάσεων, η οποία προορίζεται για προγραμματισμό):
$ git diff-tree --no-commit-id --name-only -r bd61ad98
index.html
javascript/application.js
javascript/ie6.js
Άλλος τρόπος (λιγότερο προτιμώμενος για σενάρια, επειδή είναι μια εντολή πορσελάνης- προορίζεται για χρήση από τον χρήστη)
$ git show --pretty="" --name-only bd61ad98
index.html
javascript/application.js
javascript/ie6.js
--no-commit-id
καταστέλλει την έξοδο του αναγνωριστικού δέσμευσης.--pretty
καθορίζει μια κενή συμβολοσειρά μορφοποίησης για να αποφύγετε την ακαταστασία στην αρχή.--name-only
εμφανίζει μόνο τα ονόματα των αρχείων που επηρεάστηκαν (ευχαριστώ Hank). Χρησιμοποιήστε αντί αυτού το --name-status
, αν θέλετε να δείτε τι συνέβη σε κάθε αρχείο (Δδιαγράφηκε, Μτροποποιήθηκε, Απροστέθηκε).-r
είναι για να κάνετε αναδρομή σε υποδέντραΈνας συνδυασμός του "git show --stat
" (χάρη στον Ryan) και μερικές εντολές sed θα σας βοηθήσουν να μειώσετε τα δεδομένα:
git show --stat <SHA1> | sed -n "/ [\w]\*|/p" | sed "s/|.\*$//"
Αυτό θα παράγει μόνο τη λίστα των τροποποιημένων αρχείων.