programing

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

css3 2023. 6. 4. 22:30

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

지정된 커밋에 포함된 모든 파일의 일반 목록을 인쇄하려면 어떻게 해야 합니까?

다음은 파일 목록이지만 각 파일에 대한 원하지 않는 차이 정보도 포함합니다.

git show a303aa90779efdd2f6b9d90693e2cbbbe4613c1d

선호하는 방법(배관 명령이므로 프로그래밍 방식이어야 함):

$ git diff-tree --no-commit-id --name-only bd61ad98 -r
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인수는 시작할 때 cruft를 방지하기 위해 빈 형식 문자열을 지정합니다.
  • --name-only인수에는 영향을 받은 파일 이름만 표시됩니다(Thanks Hank).사용하다--name-status대신 각 파일(삭제, 수정, 추가)에 발생한 내용을 확인하려면
  • -r

변경된 파일 목록을 가져오려면 다음을 수행합니다.

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

커밋의 모든 파일 목록을 가져오려면 다음을 사용할 수 있습니다.

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

저는 이것에 대해 그것이 바람직하지 않다고 생각합니다.그렇다면, 시도해 보세요.git show --name-only <sha>.

저는 개인적으로 show 명령어와 함께 --stat와 --oneline의 조합을 사용합니다.

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

추가/제거 통계를 원하지 않는 경우 --stat--name-only로 대체할 수 있습니다.

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

에단이 지적한 것처럼:

git diff --name-only START_COMMIT..END_COMMIT

용사를 합니다.--name-status 각 사항됩니다.

git diff --name-status START_COMMIT..END_COMMIT

가장 단순한 형태:

git show --stat (hash)

그것은 기억하기 쉽고 당신이 필요로 하는 모든 정보를 제공할 것입니다.

만 원한다면, 은 파이름원경추있다수니를 할 수 .--name-only선택.

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

저는 바뀐 가명을 꽤 자주 사용합니다.설정 방법:

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

사용하다

git log --name-status

커밋 ID, 메시지, 변경된 파일, 수정, 생성, 추가 또는 삭제 여부가 표시됩니다.일종의 올인원 명령입니다.

이름과 행 수를 변경하려면 이 명령을 사용하십시오.

git show --stat <commit-hash>

파일 이름만 표시

git show --stat --name-only  <commit-hash>

마지막 커밋 해시를 가져오려면 다음 명령을 사용합니다.

git log -1

show files name 및 file status modify, create 또는 delete 표시가 있는 마지막 커밋:

 git log -1 --oneline --name-status <commit-hash>

아니면 모두를 위하여

git log

Git 로그에 대한 자세한 내용은 다음 문서를 참조하십시오.

표준 명령 사용(스크립팅에도 유용):

git diff --name-only <sha>^ <sha>

변경된 파일의 상태도 원하는 경우:

git diff --name-status <sha>^ <sha>

병합 커밋에서 잘 작동합니다.

특정 커밋에서 변경된 파일을 나열하는 방법

git show --pretty=%gd --stat <commit_id>

최근 커밋 시 변경된 파일을 나열하는 방법

git show --pretty=%gd --stat
git log 88ee8^..88e8 --이름 전용 --hostname="format:"

특정 커밋의 모든 파일을 표시하는 방법이 몇 가지 있습니다.

정보를 줄이고 커밋된 파일의 이름만 표시하려면 간단히 추가할 수 있습니다.--name-only또는--name-status 는 원하는 커밋과 합니다.이 플래그는 원하는 대로 이전 커밋과 다른 파일 이름을 표시합니다.

은 있다니습수를 할 수 .git diff에 뒤에--name-only의 커밋 됩니다.<sha0> <sha1>다음과 같은 것이 있습니다.

git diff --name-only 5f12f15 kag9f02

또한 다음과 같은 상황에서 거쳐야 할 모든 단계를 보여주기 위해 아래 이미지를 만들었습니다.

git diff --이름만 5f12f15kag9f02

마지막 커밋에서 파일 목록을 변경하려면 간단한 한 줄 명령을 사용합니다.

git diff HEAD~1 --name-only

git whatchanged 낮은 수준 보준수▁than보다 더 낮은 입니다.git log

NAME
       git-whatchanged - Show logs with difference each commit introduces

에 있는 파일 가 추가된합니다("("", "commit summary").A D 된 경우M);

$ git whatchanged f31a441398fb7834fde24c5b0c2974182a431363

다음과 같은 것을 제공합니다.

commit f31a441398fb7834fde24c5b0c2974182a431363
Author: xx <xx@xx.nl>
Date:   Tue Sep 29 17:23:22 2015 +0200

    added fb skd and XLForm

:000000 100644 0000000... 90a20d7... A  Pods/Bolts/Bolts/Common/BFCancellationToken.h
:000000 100644 0000000... b5006d0... A  Pods/Bolts/Bolts/Common/BFCancellationToken.m
:000000 100644 0000000... 3e7b711... A  Pods/Bolts/Bolts/Common/BFCancellationTokenRegistration.h
:000000 100644 0000000... 9c8a7ae... A  Pods/Bolts/Bolts/Common/BFCancellationTokenRegistration.m
:000000 100644 0000000... bd6e7a1... A  Pods/Bolts/Bolts/Common/BFCancellationTokenSource.h
:000000 100644 0000000... 947f725... A  Pods/Bolts/Bolts/Common/BFCancellationTokenSource.m
:000000 100644 0000000... cf7dcdf... A  Pods/Bolts/Bolts/Common/BFDefines.h
:000000 100644 0000000... 02af9ba... A  Pods/Bolts/Bolts/Common/BFExecutor.h
:000000 100644 0000000... 292e27c... A  Pods/Bolts/Bolts/Common/BFExecutor.m
:000000 100644 0000000... 827071d... A  Pods/Bolts/Bolts/Common/BFTask.h
...

저는 이 대답이 "관련 없는 정보가 없는" 대답과 실제로 일치하지 않는다는 것을 알지만, 여전히 이 목록이 파일 이름보다 더 유용하다고 생각합니다.

병합 커밋에서 변경된 파일 목록을 가져오는 데 사용합니다.

λ git log -m -1 --name-only --pretty="format:"
configs/anotherconfig.xml
configs/configsInRepo.xml

또는

λ git log -m -1 --name-status --pretty="format:"
A       configs/anotherconfig.xml
M       configs/configsInRepo.xml
git show --name-only a303aa90779efdd2f6b9d90693e2cbbbe4613c1d

이를 사용하여 두 변경 집합 사이의 수정된 파일 목록을 가져옵니다.

git diff --name-status <SHA1> <SHA2> | cut -f2

나는 사용하기를 좋아합니다.

git show --stat <SHA1>^..<SHA2>

저는 이에 대한 완벽한 답을 찾았습니다.

git show --name-status --oneline <commit-hash>

내가 알 수 있도록.

  • 방금 수정된 파일( M)

  • 새로 추가된 파일( A)

  • 삭제된 파일(D)

마음에 들어요.

git diff --name-status <SHA1> <SHA1>^

로그를 표시합니다.

COMMITSHA-1 해시 또는 SHA-1 해시의 단축 버전은 공백(")일 수 있습니다.

git log COMMIT -1 --name-only

이렇게 하면 파일만 나열되며 추가 처리에 매우 유용합니다.

git log COMMIT -1 --name-only --pretty=format:"" | grep "[^\s]"

커밋에서 변경된 파일 나열:

git diff --name-only SHA1^ SHA1

로그 메시지, 추가 줄 바꿈 또는 기타 혼란스러운 내용은 표시되지 않습니다.이것은 현재 커밋뿐만 아니라 모든 커밋에 적용됩니다.

파일 목록만(커밋 메시지도 아님):

git show --name-only --pretty=format:

예: 편집기에서 변경된 모든 파일 열기:

git show --name-only --pretty=format: | xargs "$EDITOR"

파일 목록으로 보는 간단한 방법이 있습니다.그냥 추가:해시 후:

git show 9d3a52c474:

그런 다음 구멍을 뚫을 수 있습니다.

git show 9d3a52c474:someDir/someOtherDir

파일을 누르면 파일의 원시 버전이 표시됩니다. 좋은 참조나 주요 코드 조각만 찾는다면 이 버전이 필요할 때가 있습니다(diff는 모든 것을 엉망으로 만들 수 있습니다).

git show 9d3a52c474:someDir/someOtherDir/somefile

이 방법의 유일한 단점은 파일 트리를 쉽게 표시하지 않는다는 것입니다.

"의 조합git show --stat(Ryan에게 감사합니다) 그리고 몇 가지 sed 명령을 사용하면 데이터를 줄일 수 있습니다.

git show --stat <SHA1> | sed -n "/ [\w]\*|/p" | sed "s/|.\*$//"

그러면 수정된 파일 목록만 생성됩니다.

아마도 나는 누군가 당신이 'log' 명령을 사용하여 로그 x 이전 커밋을 확대하여 영향을 받은 파일의 이름을 포함하고 마지막에 --name-only를 추가하고 싶은지 언급하지 않은 것 같습니다.

그래서:

git log -n3

마지막 3개 커밋의 마지막 댓글을 봅니다.

git log -n3 --name-only

마지막 세 번의 커밋에서 영향을 받은 주석 및 파일을 확인합니다.

커밋 트리에 있는 모든 파일 나열:

git ls-tree --name-only --full-tree a21e610
git show HEAD@{0}

저는 잘 작동합니다.

언급URL : https://stackoverflow.com/questions/424071/how-do-i-list-all-the-files-in-a-commit