특정 디렉토리에서 어떻게 'git diff'를합니까?


132

git diff실제로 모든 소스 코드에서 diff를 실행합니다. 특정 디렉토리에서이 작업을 수행하여 그 아래에있는 파일의 수정 사항을 볼 수 있습니까?


2
stackoverflow.com/a/12123669/1815624 git diff master..yourbranch path/to/folder
CrandellWS

답변:


126

경로 (이 경우 myfolder)를 제공하고 다음을 실행하십시오.

git diff myfolder/

28
git diff -- myfoldergit에 대한 모호성을 최소화하기 위해 사용하고 싶습니다 . git diff (및 많은 git 명령)에 대한 일반적인 표기법은 git diff [commit-ish] -- [path]commit-ish 기본값이 HEAD (현재 위치)이고 [path]기본값이 git 루트 디렉토리이지만 현재 디렉토리와 관련된 모든 것이 될 수 있습니다. 이 없으면 --git은 당신이 의미하는 바를 추측 [commit-ish]하거나 [path]. 어떤 경우에는 이로 인해 git이 표기법이 '모호하다'고 말합니다. 내가 정확하게 기억한다면.
L0LN1NJ4

2
대답의 방법과 주석의 방법을 시도하면 아무것도 인쇄되지 않습니다.
ray

@ray 당신은 작업 트리 사이에 차이가 없으며 최신 커밋하는 수단
발레리 두 vasilcenko

3
@ray와 이것을 보는 미래의 개인의 경우 @CrandellWS git diff master..develop myfolder/가 원래 질문에 대한 의견에서 말한 것처럼 비교하려는 분기를 포함 할 수 있습니다 . Git 상태는 원하는 경우 변경 사항을 보여줍니다.
BVBAccelerate

2
@ray 루트 디렉토리에 있는지 확인하십시오. 경로는 현재 디렉토리에 상대적입니다.
Nickofthyme

59

다른 브랜치를 비교 --하는 경우 파일 시스템 경로에서 Git 개정판을 분리하는 데를 사용해야 합니다. 예를 들어, 두 개의 로컬 브랜치 masterbryan-working:

$ git diff master -- AFolderOfCode/ bryan-working -- AFolderOfCode/

또는 로컬 지점에서 원격으로 :

$ git diff master -- AFolderOfCode/ origin/master -- AFolderOfCode/

29
두 가지를 모두 나열한 후에는 하나의-절만 필요합니다. git diff branch1 branch2-path / to / dir
emery

4

이와 같은 것에 대한 문서를 보는 습관을 만들어야합니다. 매우 유용하며 기술을 매우 빠르게 향상시킬 수 있습니다. 할 때 관련된 부분은 다음과 같습니다.git help diff

   git diff [options] [--no-index] [--] <path> <path>

<path>들 문제의 디렉토리를 변경해야 할 것입니다.


3

추가 너머 비교 힘내에 difftool로하고 diffdir 별칭을 추가 :

git config --global alias.diffdir = "difftool --dir-diff --tool=bc3 --no-prompt"

gitdiff를 다음과 같이 가져옵니다.

git diffdir 4bc7ba80edf6  7f566710c7

참조 : 전체 디렉토리 비교 w git difftool + Beyond Compare


1
등호는 git 2.17.1에서 잘못된 것 같습니다. 사용 git config --global alias.diffdir = "difftool --dir-diff --tool=bc3 --no-prompt"대신에
마크 SCHAFER

Beyond Compare for dir diff를 사용할 때는 심볼릭 링크를 따르도록 구성해야합니다 (폴더 비교보기-> 규칙 (레퍼리 아이콘)-> 처리-> 심볼릭 링크 따르기) 또는 --no-symlinks명령이 다음과 같이 읽도록 옵션을 추가 해야합니다.git difftool --dir-diff --no-symlinks
Ashutosh Jindal

1

경로를 추가 할 수있을뿐만 아니라 git diff --relative해당 폴더와 관련된 결과를 얻기 위해 추가 할 수도 있습니다 .

git -C a/folder diff --relative

Git 2.28 (2020 년 3 분기)에서는 " diff"계열 의 명령 이 " diff.relative"구성 변수 를 준수하는 방법을 배웠습니다 .

Laurent Arnoud ( )의 commit c28ded8 (2020 년 5 월 22 일)을 참조하십시오 . (Merged by Junio ​​C Hamano -- in commit e34df9a , 02 Jun 2020)spk
gitster

diff: 구성 옵션 추가 relative

승인자 : Laurent Arnoud
승인자 : Đoàn Trần Công Danh

으로 diff.relative설정된 부울 옵션 은 옵션 truepath인수로 지정된 현재 디렉토리 / 값의 변경 사항 만 relative표시하고 앞서 언급 한 디렉토리에 상대적인 경로 이름을 표시합니다.

--no-relative더 일찍 재정의하도록 가르치기--relative

git-format-patch (1) 옵션 문서 --relative--no-relative

이제 문서에는 다음이 포함됩니다 .

diff.relative:

' true'로 설정하면 ' ' git diff는 디렉토리 외부의 변경 사항을 표시하지 않고 현재 디렉토리에 상대적인 경로 이름을 표시합니다.


0

하위 디렉토리를 제외하려면 다음을 사용할 수 있습니다.

git diff <ref1>..<ref2> -- $(git diff <ref1>..<ref2> --name-only | grep -v /)

0

사용하려면 비교 너머를 활성화 디렉토리 DIFF에 대한 difftool로 기억하는 것은 심볼릭 링크가 너무 좋아 다음과 같습니다

A의 폴더보기 비교규칙 (심판 아이콘) :

여기에 이미지 설명 입력

그런 다음 심볼릭 링크를 따르고 세션 기본값을 업데이트합니다.

여기에 이미지 설명 입력


또는,

다음과 같이 별칭을 설정하십시오.

git config --global alias.diffdir "difftool --dir-diff --tool=bc3 --no-prompt --no-symlinks"

두 경우 모두 현재 작업 트리를 참조하는 측면 (왼쪽 또는 오른쪽)에 대한 모든 편집 내용이 유지됩니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.