Programing

git : 두 커밋 사이에 변경된 모든 파일 표시

crosscheck 2020. 11. 24. 07:39
반응형

git : 두 커밋 사이에 변경된 모든 파일 표시


git on riff : 두 커밋 사이에 변경된 모든 파일 표시 : 두 커밋 사이에 변경된 모든 파일 목록이 지금은 동일하더라도 (즉, 변경된 후 다시 변경된 경우).


이것이 내가 생각할 수있는 최선의 방법입니다.

git log --name-only --pretty=oneline --full-index HEAD^^..HEAD | grep -vE '^[0-9a-f]{40} ' | sort | uniq

HEAD ^^ 및 HEAD를 비교하려는 커밋으로 바꿉니다.

내 시도는 지정된 것들 사이의 각 커밋의 모든 파일을 나열 하기 위해 git logwith --name-only사용 합니다. --pretty=oneline파일 목록 위의 부분이 커밋 SHA와 메시지 제목으로 만 구성되도록합니다. --full-indexSHA를 전체 40 자로 만듭니다. grep공백이 뒤에 오는 SHA처럼 보이는 것을 필터링합니다. SHA로 시작하는 파일과 공백이없는 경우 결과는 정확해야합니다.


이 명령이 답이라고 생각합니다.

git diff --stat abc123 xyz123  #where abc123 and xyz123 are SHA1 hashes of commit objects

로부터 직선 자식 커뮤니티 책

전체 패치를보고 싶지 않다면 '--stat'옵션을 추가하여 각 파일에서 변경된 줄 수를 나타내는 작은 텍스트 그래프와 함께 변경된 파일로 출력을 제한 할 수 있습니다.


커밋 b이 연대순으로 끝나는 파일 이름을 보려면 다음을 수행하십시오 a.

git diff <a commit sha1>...<b commit sha2> --name-only # b is after a in time

모든 파일 이름과 커밋 a에서 커밋 b로 변경된 내용을 보려면 마지막 인수를 삭제하십시오.

git diff <a commit sha1>...<b commit sha2> # shows file names and what changed in each file

의 예 <commit sha1>는 커밋 ID가 675ee6860d2c273bcc6c6a0536634a107e2a3d9f. 일반적으로 처음 8-10 자리는 대부분의 프로젝트에서 작동하지만 프로젝트에 커밋이 많으면 더 많이 필요할 수 있습니다. 일반적으로 나는 git log --oneline.

a ... b와 b의 차이가 a보다 늦을 때 각 파일에서 시간순으로 변경된 내용을 쉽게 확인할 수 있습니다.


이것은 igorw 와 유사 하지만 다음을 통해 SHA 제거를 방지합니다 grep.

git log --pretty='format:' --name-only HEAD^^..HEAD | sort -u

당신은 추가 파일이 수정 된 방법을보고 싶다면, 교체 --name-only와 함께 --name-status.


나는 사용할 것이다; 커밋 해시의 처음 8 개를 가져옵니다. 원하는 경우 아래에 따라 파일로 파이프 할 수 있습니다.

git log 12345678..87654321 > C:\GitChanges.txt

참고 URL : https://stackoverflow.com/questions/3144647/git-show-all-files-changed-between-two-commits

반응형