Πώς να παραθέσετε μόνο τα ονόματα αρχείων που άλλαξαν μεταξύ δύο κοινοποιήσεων;

Έχω ένα σωρό commits στο repo. Θέλω να δω μια λίστα με τα αρχεία που άλλαξαν μεταξύ δύο commits - από SHA1 σε SHA2.

Ποια εντολή πρέπει να χρησιμοποιήσω;

Λύση
git diff --name-only SHA1 SHA2

όπου χρειάζεται να συμπεριλάβετε μόνο αρκετό από το SHA για να αναγνωρίσετε τις μεταβιβάσεις. Μπορείτε επίσης να κάνετε, για παράδειγμα

git diff --name-only HEAD~10 HEAD~5

για να δείτε τις διαφορές μεταξύ της δέκατης πιο πρόσφατης δέσμευσης και της πέμπτης πιο πρόσφατης (ή κάτι τέτοιο).

Σχόλια (12)
git diff --name-status [SHA1 [SHA2]]

είναι σαν το --name-only, εκτός από το ότι λαμβάνετε ένα απλό πρόθεμα που σας λέει τι συνέβη στο αρχείο (τροποποιήθηκε, διαγράφηκε, προστέθηκε...)

git log --name-status --oneline [SHA1..SHA2]

είναι παρόμοιο, αλλά οι δεσμεύσεις παρατίθενται μετά το μήνυμα δέσμευσης, ώστε να μπορείτε να δείτε πότε άλλαξε ένα αρχείο.

  • αν σας ενδιαφέρει τι ακριβώς συνέβη σε συγκεκριμένα αρχεία/φακέλους μπορείτε να προσθέσετε -- [...] στην έκδοση git log.

  • αν θέλετε να δείτε τι συνέβη για μια μόνο δέσμευση, ονομάστε την SHA1, και στη συνέχεια κάντε git log --name-status --oneline [SHA1^..SHA1]

Σημαίες κατάστασης αρχείου:
M modified - Το αρχείο έχει τροποποιηθεί C copy-edit - Το αρχείο έχει αντιγραφεί και τροποποιηθεί R rename-edit - Το αρχείο έχει μετονομαστεί και τροποποιηθεί A added - Το αρχείο έχει προστεθεί D deleted - Το αρχείο έχει διαγραφεί U unmerged - Το αρχείο έχει συγκρούσεις μετά από συγχώνευση

Σχόλια (4)

Αλλά για να δείτε τα αρχεία που άλλαξαν μεταξύ του κλάδου σας και του κοινού προγόνου του με έναν άλλο κλάδο (π.χ. origin/master):

git diff --name-only `git merge-base origin/master HEAD`
Σχόλια (5)