Szukam prostej komendy git
, która dostarcza ładnie sformatowaną listę wszystkich plików, które były częścią zobowiązania, podaną przez hash (SHA1), bez żadnych dodatkowych informacji.
Próbowałem:
git show a303aa90779efdd2f6b9d90693e2cbbbe4613c1d
Chociaż zawiera listę plików, zawiera również niechciane informacje diff dla każdego z nich.
Czy istnieje inna komenda git
, która dostarczy tylko listę, którą chcę, tak, że mogę uniknąć parsowania jej z wyjścia git show
?
Preferowany sposób (ponieważ jest to polecenie hydrauliczne, które ma być programowe):
$ git diff-tree --no-commit-id --name-only -r bd61ad98
index.html
javascript/application.js
javascript/ie6.js
Inny sposób (mniej preferowany dla skryptów, ponieważ'jest to polecenie porcelanowe; przeznaczone dla użytkownika)
$ git show --pretty="" --name-only bd61ad98
index.html
javascript/application.js
javascript/ie6.js
--no-commit-id
wyłącza wyświetlanie ID commitów.--pretty
określa pusty łańcuch formatu, aby uniknąć niepotrzebnych elementów na początku.--name-only
pokazuje tylko nazwy plików, których to dotyczyło (Dzięki Hank). Użyj zamiast tego name-status
, jeśli chcesz zobaczyć co się stało z każdym plikiem (Deleted, Modified, Added)-r
służy do rekursji do poddrzew.Połączenie "git show --stat
" (dzięki Ryan) i kilku komend sed powinno przyciąć dane dla Ciebie:
git show --stat <SHA1> | sed -n "/ [\w]\*|/p" | sed "s/|.\*$//"
Spowoduje to wyświetlenie tylko listy zmodyfikowanych plików.