커밋 된 모든 파일을 나열하려면 어떻게합니까?


질문

 

나는 그 외부 정보가없는 해시 (SHA-1)가 주어진 커밋의 일부가 된 모든 파일의 멋진 형식의 목록을 제공하는 간단한 git 명령을 찾고 있습니다.

나는 시도했다 :

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는 커밋 ID 출력을 억제합니다. -pretty 인수는 처음에 크루프를 피하기 위해 빈 형식 문자열을 지정합니다. -name-only 인수는 영향을받은 파일 이름 만 표시합니다 (감사합니다).각 파일 (삭제, 수정, 추가)에서 무슨 일이 일어 났는지 확인하려면 --name-status를 사용하십시오. -R 인수는 하위 나무로 되돌아갑니다.



답변

변경된 파일 목록을 가져 오려면 다음을 수행하십시오.

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

커밋 된 모든 파일 목록을 얻으려면 사용할 수 있습니다.

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


답변

Gitk가 원하지 않는다고 가정 할 것입니다.이 경우 git show -name-only 를 시도하십시오.



답변

나는 개인적으로 쇼 명령을 사용하여 --stat 및 --oneline의 조합을 사용합니다.

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


답변

당신은 또한 할 수 있습니다

git log --name-only

다양한 커밋, 커밋 메시지 및 변경된 파일을 탐색 할 수 있습니다.

Q를 입력하여 프롬프트를 다시 가져옵니다.



답변

최근에 두 가지 커밋 사이에 변경된 모든 파일을 나열해야했습니다.그래서 나는 이것을 (또한 * nix 특정) 명령을 사용했다.

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

또는 Ethan이 지적하기 때문에 :

git diff --name-only START_COMMIT..END_COMMIT

-name-status를 사용하면 각 파일 옆에 변경 (추가, 수정, 삭제 등)도 포함됩니다.

git diff --name-status START_COMMIT..END_COMMIT
출처:https://stackoverflow.com/questions/424071/how-do-i-list-all-of-the-files-in-a-commit