it-swarm-ko.tech

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

레포에 커밋이 잔뜩 있어요. SHA1에서 SHA2까지 두 개의 커밋 사이에서 변경된 파일 목록을보고 싶습니다.

어떤 명령을 사용해야합니까?

1644
Shawn
git diff --name-only SHA1 SHA2

커밋을 식별하는 데 필요한 SHA 만 있으면 충분합니다. 예를 들면 다음과 같이 할 수도 있습니다.

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

10 번째의 최신 커밋과 5 번째의 최신 커밋 (또는 그 이상)의 차이점을 확인하십시오.

2190
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 modified - 파일이 수정되었습니다.
C copy-edit - 파일이 복사되고 수정되었습니다.
R rename-edit - 파일의 이름이 변경되고 수정되었습니다.
추가됨 - 파일이 추가되었습니다.
D 삭제됨 - 파일이 삭제되었습니다.
U 병합되지 않음 - 병합 후에 파일에 충돌이 있습니다. 

365
artfulrobot

그러나 다른 브랜치 (예 : Origin/master)를 사용하여 브랜치와 공통 조상간에 변경된 파일을 보려면 :

git diff --name-only `git merge-base Origin/master HEAD`
44
Tim James

아무도 --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도 있습니다.

$ 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(-)
42
leeyuiwah

@ artfulrobot의 답을 보완하기 위해 두 개의 브랜치간에 변경된 파일을 보여주고 싶다면 :

git diff --name-status mybranch..myotherbranch

우선 순위에주의하십시오. 새로운 브랜치를 먼저 배치하면 파일이 추가되지 않고 삭제 된 것으로 표시됩니다.

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

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

그러면 myotherbranch에 추가 된 파일 만 표시됩니다.

19
Max MacLeod

~/.bash_profile에 별칭을 추가 한 다음 source ~/.bash_profile를 실행하십시오. 이제 마지막 커밋에서 업데이트 된 파일을 볼 필요가있을 때마다 git 저장소에서 showfiles을 실행하십시오. 

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

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

git diff --Word-diff SHA1 SHA2
7
Julio Marins

git log --pretty = oneline> C :\filename.log를 사용하십시오.

변경된 파일의 이름 인 oneline (--pretty = oneline) 만 기록합니다. 또한 모든 세부 사항을 출력 파일에 기록합니다.

3
Agni

마지막 커밋과 그 전의 커밋 사이의 변경된 파일을보고 싶을뿐입니다. 이것은 잘 작동합니다 : git show --name-only

3
Parris

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
2
Jaime Montoya

git diff --name-status에 기반하여 나는 두 경로 사이에서 무엇이 변경되었는지에 대한 계층 적 트리 뷰를 렌더링하는 git-diffview git 확장을 작성했습니다.

0
Bernard Opic

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

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

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

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

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

위의 몇 가지 답변과 비슷하지만 tformat: 대신 format:를 사용하면 커밋 사이의 구분자 간격이 제거됩니다.

0
blindsnowmobile

자바 파일에만 집중할 필요가있는 누군가를 위해, 이것이 나의 해결책이다.

 git diff --name-status SHA1 SHA2 | grep '\.Java$'
0
K. Symbol