어딘가에 구성 오류라고 생각하지만 어디에서 찾을 수 없습니다. 일반 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)
- 작업 복사본을 인덱스와 비교
- HEAD와 인덱스 비교
- 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
“모드에 들어갈 때 오류 메시지에 ” “를 추가 하여 그렇게하도록 지시하십시오.
보다:
- commit 286bc123cd ( gitster, Junio C Hamano ), 이는
git diff --no-index
일반 (비 자식)처럼 작동 할 수 있음을 설명합니다diff
. - b214eddfb2 (Dale R. Worley)를 커밋 하여 오류 메시지를 명확히합니다.
”
diff --no-index
“에 대한 문서를 명확히하십시오 .
저장소 내부가 아닐 때는--no-index
묵시적이며 두 개의 인수가 필수 임을 명시하십시오 .
diff-no-index
CWD가 저장소 내부에 있지 않으므로 두 개의 인수가 필수임을 사용자에게 알리기 위해의 오류 메시지를 명확히합니다 .
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
아무 일도 일어나지 않는다