etc./StackOverFlow

두 커밋 사이에 변경된 파일 이름만 나열하는 방법

청렴결백한 만능 재주꾼 2021. 11. 29. 22:34
반응형

질문자 :Shawn


저장소에 커밋이 많이 있습니다. SHA1 에서 SHA2로 두 커밋 사이에 변경된 파일 목록을 보고 싶습니다.

어떤 명령어를 사용해야 하나요?



git diff --name-only SHA1 SHA2

커밋을 식별하기에 충분한 SHA 해시만 포함하면 됩니다. 예를 들어 다음을 수행할 수도 있습니다.

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

10번째 최신 커밋과 5번째 최신 커밋(또는 그 정도)의 차이점을 확인합니다.


Peter

git diff --name-status [SHA1 [SHA2]]

파일에 일어난 일(수정, 삭제, 추가...)을 알려주는 간단한 접두어를 얻는다는 점을 제외하고는 --name-only와 같습니다.

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

비슷하지만 커밋 메시지 뒤에 커밋이 나열되어 파일이 변경된 시점을 확인할 수 있습니다.

  • 특정 파일/폴더에 발생한 일에 관심이 있다면 -- <filename> [<filename>...]git log 버전에 추가할 수 있습니다.

  • 단일 커밋에 대해 어떤 일이 발생했는지 보려면 SHA1이라고 부르고 다음을 수행하십시오.
    git log --name-status --oneline [SHA1^..SHA1]

파일 상태 플래그:

깃발 이름 의미
M 수정 파일이 수정되었습니다
C 복사 편집 파일이 복사 및 수정되었습니다.
R 이름 바꾸기-편집 파일 이름이 변경되고 수정되었습니다.
A 추가 파일이 추가되었습니다
D 삭제됨 파일이 삭제되었습니다
U 병합되지 않은 병합 후 파일에 충돌이 있습니다.

artfulrobot

--stat 대해 언급하지 않은 것 같습니다.

 $ git diff --stat HEAD~5 HEAD .../java/org/apache/calcite/rex/RexSimplify.java | 50 +++++++++++++++++----- .../apache/calcite/sql/fun/SqlTrimFunction.java | 2 +- .../apache/calcite/sql2rel/SqlToRelConverter.java | 16 +++++++ .../org/apache/calcite/util/SaffronProperties.java | 19 ++++---- .../org/apache/calcite/test/RexProgramTest.java | 24 +++++++++++ .../apache/calcite/test/SqlToRelConverterTest.java | 8 ++++ .../apache/calcite/test/SqlToRelConverterTest.xml | 15 +++++++ pom.xml | 2 +- .../apache/calcite/adapter/spark/SparkRules.java | 7 +-- 9 files changed, 117 insertions(+), 26 deletions(-)

--numstat도 --numstat

 $ git diff --numstat HEAD~5 HEAD 40 10 core/src/main/java/org/apache/calcite/rex/RexSimplify.java 1 1 core/src/main/java/org/apache/calcite/sql/fun/SqlTrimFunction.java 16 0 core/src/main/java/org/apache/calcite/sql2rel/SqlToRelConverter.java 8 11 core/src/main/java/org/apache/calcite/util/SaffronProperties.java 24 0 core/src/test/java/org/apache/calcite/test/RexProgramTest.java 8 0 core/src/test/java/org/apache/calcite/test/SqlToRelConverterTest.java 15 0 core/src/test/resources/org/apache/calcite/test/SqlToRelConverterTest.xml 1 1 pom.xml 4 3 spark/src/main/java/org/apache/calcite/adapter/spark/SparkRules.java

--shortstat

 $ git diff --shortstat HEAD~5 HEAD 9 files changed, 117 insertions(+), 26 deletions(-)

leeyuiwah

그러나 다른 분기(예: origin/master)를 사용하여 분기와 공통 조상 간에 변경된 파일을 보려면 다음을 수행합니다.

 git diff --name-only `git merge-base origin/master HEAD`

Tim James

@artfulrobot의 답변을 보완하려면 두 분기 간에 변경된 파일을 표시하려면 다음을 수행하십시오.

 git diff --name-status mybranch..myotherbranch

우선 주의하세요. 새 분기를 먼저 배치하면 파일이 추가되지 않고 삭제된 것으로 표시됩니다.

grep 추가하면 상황을 더욱 세분화할 수 있습니다.

 git diff --name-status mybranch..myotherbranch | grep "A\t"

myotherbranch 추가된 파일만 표시됩니다.


Max MacLeod

또한 마지막 커밋과 그 이전 커밋 사이에 변경된 파일을 보려면 다음과 같이 하면 됩니다.

 git show --name-only

Parris

그러면 파일의 변경 사항이 표시됩니다.

 git diff --word-diff SHA1 SHA2

Julio Marins

~/.bash_profile 파일에 아래 별칭을 추가하고 source ~/.bash_profile 을 실행하십시오. 이제 git 저장소에서 showfiles 파일에서 업데이트된 파일을 볼 필요가 있을 때마다.

 alias showfiles='git show --pretty="format:" --name-only'

Zorayr

Java 파일에만 집중해야 하는 사람을 위한 솔루션은 다음과 같습니다.

 git diff --name-status SHA1 SHA2 | grep '\.java$'

K. Symbol

artfulrobot은 그의 대답에서 다음과 같이 말했습니다.

 git diff --name-status [SHA1 [SHA2]]

내 예:

 git diff --name-status 78a09k12067c24d8f117886c4723ccf111af4997 4b95d595812211553070046bf2ebd807c0862cca M views/layouts/default.ctp M webroot/css/theme.css A webroot/img/theme/logo.png

Jaime Montoya

사용하다

 git log --pretty=oneline > C:\filename.log

변경된 파일의 이름인 한 줄 --pretty=oneline )만 기록합니다. 또한 모든 세부 정보를 출력 파일에 기록합니다.


Agni

다음은 나를 위해 잘 작동합니다.

 git show --name-only --format=tformat: SHA1..SHA2

단일 커밋과 함께 사용할 수도 있습니다.

 git show --name-only --format=tformat: SHA1

이는 변경 집합 SHA 해시 값 목록 이 제공되고 어떤 파일이 변경되었는지 확인하기 위해 반복하려는 Jenkins 에서 사용하기에 편리합니다.

이것은 이전의 답변을 몇 유사하지만, 사용 tformat: 보다는 format: 커밋 사이의 분리 공간을 제거합니다.


blindsnowmobile

git diff --name-status 기반으로 두 경로 사이에서 변경된 사항에 대한 계층적 트리 보기를 렌더링하는 git-diffview Git 확장을 작성했습니다.


Bernard Opic

준비된 파일을 포함하여 변경된 파일 목록을 찾는 경우

 git diff HEAD --name-only --relative --diff-filter=AMCR git diff HEAD --name-only --relative --diff-filter=AMCR sha-1 sha-2

절대 경로를 원하면 --relative 제거하십시오.


girishso

모든 이전 답변의 가장 큰 문제는 리포지토리에서 가져오려는 정보를 사용하려는 경우 매우 성가신 호출기에 입력된다는 것입니다. 특히 vim 명령을 배우는 대신 개발해야 하는 애플리케이션의 비즈니스 로직을 배우고자 하는 개발자라면 더욱 그렇습니다.

--no-pager를 사용하면 해당 문제가 해결됩니다.

 git --no-pager diff --name-only sha1 sha2

m12lrpv

출처 : http:www.stackoverflow.com/questions/1552340/how-to-list-only-the-names-of-files-that-changed-between-two-commits

반응형