Питання Як перерахувати всі файли в фіксації?


Я шукаю простий git команда, яка надає чітко відформатований список всіх файлів, що входили до складу здійснення хешу (SHA1), без сторонньої інформації.

Я намагався:

git show a303aa90779efdd2f6b9d90693e2cbbbe4613c1d

Хоча це і перераховує файли, він також включає в себе небажану інформацію про різницю для кожного.

Чи є ще один? git команда, яка забезпечить якраз список, я хочу, щоб я міг уникнути розбору його з git show вихід


2179
2018-01-08 12:26


походження


Я прийшов сюди, шукаючи щось дещо інше. Я хочу переглянути всі файли, модифіковані для набору завдань і закінчуючи використанням git log --until 2013-05-21 --pretty="short" --name-only з гарним ефектом. - Limited Atonement
Використовуйте цю команду, щоб отримати всі зміни від попередніх n зобов'язується до master: git diff-tree --name-status -r @{3} master - ako


Відповіді:


Переважна дорога (тому що це а сантехніка командування; означає бути програмним):

$ 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

  • The --no-commit-id пригнічує вихідний код фіксації.
  • The --pretty аргумент вказує порожній рядок формату, щоб уникнути перешкод на початку.
  • The --name-only Аргумент показує лише імена файлів, які зазнали впливу (Спасибі Хенку).
  • The -r аргумент - повторюватися на під деревах

2866
2018-01-08 13:02



фарфорові команди не слід використовувати в скрипті (git help). Будь ласка, використовуйте git diff-tree --no-commit-id --name-only -r <commit> замість цього - drizzt
Слід зазначити, що diff-tree не буде працювати при перегляді кореневої фіксації. - jbranchaud
Замінювати --name-only опція з --name-status дасть більш чітке резюме. - Kurt Zhong
Якщо ви хочете, щоб він працював на корінь, використовуйте прапорець -root. З сторінки man: "Коли вказано - root, початкове зобов'язання відображатиметься як велика подія створення, що дорівнює різниці від дерева NULL". - Chris
git log --name-only -n 1 <hash> Остання фіксація буде: git log --name-only -n 1 HEAD~1..HEAD - Kurt


Якщо ви хочете отримати список змінених файлів:

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

Якщо ви хочете отримати список всіх файлів в commit, ви можете використовувати

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

189
2018-01-14 19:22



Дерево ls з ім'ям-тільки не працює на 1.6.4.4 або 1.6.3.3. Ви думаєте, що це помилка? - krosenvold
Виявляється, тут важливий упорядкування параметрів. Той, хто у вашому посланні не працює, а той, який у вашій відповіді робить робота - принаймні, поки ви не оновите свій пост;) - krosenvold
Пройти --no-commit-id щоб уникнути друку SHA1, так: git diff-tree --no-commit-id --name-only -r <commit-ish> - John Mellor
@CoDEmanX: Ви не пропустили додавання -r / -t варіант, чи не так? Тому що diff-tree обробляє як модифіковані, так і додані файли. Якщо ви хочете перерахувати всі нові (додані) файли, скористайтеся git diff-tree -r --name-only --no-commit-id --diff-filter=A <commit-ish> - Jakub Narębski
Чи не треба це бути тривіальним? - Niklas Rosencrantz


Я просто припущу це gitk для цього небажано. У такому випадку спробуйте git show --name-only <sha>.


180
2018-01-08 12:34



- лише в назві - це багато в більшості випадків, коли мені це потрібно; Тому виправдано найкоротший спосіб вирішення (і єдиний, який я пам'ятаю в 1 спробі). - Erik S
Or --name-status. - Neil Traft
gitk саме те, що я був після - спасибі. це питання - це перше, що з'являється в пошуку Google, тому варто знати це люди gitk існує! Решта ви можете зберегти вашу командну строку; Я просто подивіться на цей хороший екран інтерфейсу користувача :) - Mr Spoon
Як людина, яка дійсно любить CLI git, gitk це насправді гідний спосіб перегляду файлів і відображення файлу, на якому існує різниця. наприклад, Код, що розглядає монстр-прихильність від однолітків. - Elijah Lynn


Я особисто використовую комбінацію --стат і - однолінійний з показати команда:

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

Якщо вам не подобається / хочеться додавати / видаляти статистику, ви можете замінити --стат з - лише ім'я

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

114
2017-07-11 23:21



Це чудово! В основному це дає вам стислий опис файлів, який Github показує у верхній частині перегляду фіксації. Дякую. - trisweb
Дуже добре. Щоб визначити псевдонім: alias gits='git show --stat --oneline', потім gits сама по собі показує останні зміни (у HEAD), в той час як gits b24f5fb може бути використаний для показу будь-яких змін у редакції. - Brent Faust
Можна також створити псевдонім git ... наприклад може бути git config --global alias.changes 'show --stat --oneline'. Тоді ти можеш набрати git changes (з необов'язковим commit-ish) і отримати вихід з перших прикладів вище. - lindes
Git для Windows вимагає подвійних лапок: git config --global alias.changes "show --stat --oneline" - Alchemistmatt
Приємно І на відміну від прийнятої відповіді, git show також працює для перегляду стиснутих змін: наприклад, git show --stat --oneline stash@{1} - Jeff Ward


Нещодавно мені потрібно було перерахувати всі змінені файли між двома зобов'язаннями. Тому я використав цю команду (також * nix specific)

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

Оновити: Або як зазначає Етан нижче

git diff --name-only START_COMMIT..END_COMMIT

Використовуючи --name-status також буде містити зміни (додані, змінені, видалені тощо) біля кожного файлу

git diff --name-status START_COMMIT..END_COMMIT

58
2018-04-26 12:23



Просто спробував: чудово працює в git bash також у Windows. - OregonGhost
Якщо ви використовуєте git diff --name-status START_COMMIT..END_COMMIT то вам не потрібні кінцеві |sort | uniq. - Ethan
Виправлення до вищезазначеного коментаря: git diff --name-only START_COMMIT..END_COMMIT - Ethan
Це те, що я шукав. Як я її використав? git diff --name-only START_COMMIT..END_COMMIT | grep -v -e '**.png' -e '**.xml'. Я хотів, щоб список кодів змінився лише для величезного PR, який додав тисячі PNG та макетів XML. - AutonomousApps


Ви також можете це зробити

git log --name-only

і ви можете переглядати різні комбінації, передавати повідомлення та змінені файли.

Введіть q, щоб повернути ваш запит.


56
2018-05-27 01:20





Найпростіша форма:

git show --stat (hash)

Це легше запам'ятати, і це дасть вам всю необхідну інформацію.

Якщо ви дійсно хочете лише імена файлів, які ви можете додати --name-only варіант

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


48
2017-07-16 00:06



Я хотів би дізнатись, чому, якщо моя відповідь проста і правильна, я отримав негативний голос. - VaTo
Якщо б я мав ризикнути здогадуватися (і я лише здогадуюсь, тому що це не я, я проголосував за вашу відповідь), це було тому, що оригінальний плакат попросив лише список файлів без будь-якої іншої інформації. Указана вами команда показує інформацію про здійснення та типи змін, внесених до файлу. Я знайшов вашу відповідь корисною для чогось іншого, якщо це будь-яка розрада. - J. Gregory Wright
@ J.GregoryWright ви можете бути правильними, у такому випадку я б додати - тільки ім'я, і ​​це все. Тим не менш, я використовую команду, яку я надала, тому що її легше запам'ятати. Але я буду поставити ці два варіанти на всякий випадок, дякую за пропозицію! - VaTo
- лише ім'ям буде ще кілька заголовків, які містять таку інформацію, як автор, дата та повідомлення про порушення. - devoured elysium
найкраща відповідь ІМО, інші не пам'ятна взагалі. - Amalgovinus


я використовую змінився псевдонім досить часто. Щоб налаштувати його:

git config --global alias.changed 'show --pretty="format:" --name-only'

потім:

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)

Подібні команди, які можуть бути корисними:

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

45
2018-04-29 13:13



upvote за псевдонімом - Clint Eastwood