[git] “git diff”는 아무것도하지 않습니다.

어딘가에 구성 오류라고 생각하지만 어디에서 찾을 수 없습니다. 일반 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 저장소에 있지 않기 때문에 예상되는 동작 일 수 있습니다.

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



답변

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

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

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

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

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

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


답변

참고 : 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>


답변

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


답변

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

git diff old_dir new_dir.

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


답변

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

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

아무 일도 일어나지 않는다


답변