"git diff"는 아무것도하지 않습니다.


94

어딘가에 구성 오류라고 생각하지만 어디에서 찾을 수 없습니다. 일반 git 명령은 잘 작동하는 것처럼 보이지만 "git diff"는 아무 작업도 수행하지 않습니다. 안전을 위해 .gitconfig 파일에서 외부 diff 도구를 제거했습니다. 이것은 MacPorts를 통해 설치되었으며 최신 버전 (1.7.2.2)입니다.

내가 보는 것은 내 작업 공간에서 "git diff"를 실행하면 아무 작업도하지 않고 단순히 종료된다는 것입니다.

$ git --version
git version 1.7.2.2
$ git diff
$ 

루트 작업 공간에서 하나의 디렉토리를 백업하는 경우 "git diff"를 입력하면 다음과 같은 결과가 나타납니다.

$ git diff
usage: git diff [--no-index] <path> <path>

git 저장소에 있지 않기 때문에 예상되는 동작 일 수 있습니다.

이 문제를 해결하기 위해 무엇을 할 수 있는지에 대한 아이디어가 있습니까?


문제를 해결할 것이 있다고 생각하는 이유는 무엇입니까? 무엇을 기대 했습니까?
Rob Kennedy

참고 : 저장소 git diff 외부 에서 사용할 때 발생하는 오류 메시지 는 곧 더 명확해질 것입니다. 보기 내 대답은 아래
VonC

두 커밋간에 특정 파일을 비교하려고하는데 출력이 표시되지 않는 경우 파일 경로에서 대 / 소문자가 올바른지 확인하십시오.
Seth Flowers

답변:


110

에 대한 기본 출력 git diff은 색인에 커밋 / 추가되지 않은 변경 목록입니다. 변경 사항이 없으면 출력이 없습니다.

git diff [-옵션] [-] […]

이 양식은 인덱스 (다음 커밋을위한 스테이징 영역)와 관련하여 변경 한 내용을보기위한 것입니다. 즉, 차이점은 git에게 색인에 더 추가하라고 말할 있지만 여전히 그렇지 않은 것입니다.

자세한 내용은 설명서 를 참조하십시오. 특히 예제로 스크롤하여이 섹션을 읽으십시오.

$ git diff            # (1)
$ git diff --cached   # (2)
$ git diff HEAD       # (3)
  1. 작업 복사본을 인덱스와 비교
  2. HEAD와 인덱스 비교
  3. HEAD로 작업 사본 비교

짐작했듯이 작업 공간 밖에서 git은 무엇을 비교할지 알지 못하므로 비교할 두 경로를 명시 적으로 지정해야하므로 사용 메시지가 표시됩니다.


13
귀하의 답변이 정확한지 잘 모르겠지만 답변을 찾는 데 도움이되었으므로 감사합니다. 그렇게 표시하겠습니다. 자식은 diff의 기본 출력은 하지 않은 변경의 목록이 있습니다 않은 변경의 목록입니다 또한 "아직 다음 커밋을위한 무대". 그래서, "git diff"가 할 것으로 예상했던 것을 수행하는 명령은 실제로 "git diff HEAD"입니다.
Tom Lianza

2
그림을 완성하려면 git diff --cached를 사용하여 색인에있는 내용 만 표시합니다.
Douglas

git diff는 (index)-(working directory) 또는 다른 방법으로 : (working directory)-(index)합니까?
BKSpurgeon

4

참고 : git 1.8.5 또는 1.9부터 2013 년 4 분기 :

사용자 가 작업 트리 외부에 " git diff"를 입력 하고 자신이 트리 안에 있다고 생각하면 현재 오류 메시지는 단일 행입니다.

usage: git diff --no-index <path> <path>

그가 실수를 깨닫게하기에는 충분하지 않을 수 있습니다.

명시적인 명령 줄 옵션없이 Not a git repository" --no-index"모드에 들어갈 때 오류 메시지에 " "를 추가 하여 그렇게하도록 지시하십시오.


보다:

" diff --no-index"에 대한 문서를 명확히하십시오 .
저장소 내부가 아닐 때는 --no-index묵시적이며 두 개의 인수가 필수 임을 명시하십시오 .

diff-no-indexCWD가 저장소 내부에 있지 않으므로 두 개의 인수가 필수임을 사용자에게 알리기 위해의 오류 메시지를 명확히합니다 .

To compare two paths outside a working tree:
usage: git diff --no-index <path> <path>

2

작업 디렉토리가 깨끗하고 마지막 업데이트와 차이가 없으면 아무 작업도 수행하지 않습니다. 파일을 편집 한 다음 git diff를 다시 실행하면 diff가 표시됩니다.


1

실제 저장소 또는 작업 복사본 외부에서 사용하는 경우 동작은 GNU diff와 동일합니다. 따라서 비교할 2 개의 디렉토리 또는 파일을 알려야합니다. 예:

git diff old_dir new_dir.

둘 사이에 차이가 있으면 예상대로 출력에 표시됩니다.


0

귀하의 경우는 아니지만 전달 한 파일이 존재하지 않기 때문일 수 있습니다.

$ git difftool HEAD HEAD^ -- path/that-not-exists

아무 일도 일어나지 않는다

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