답변:
찾고 있습니다 git diff
. 정확한 상황에 따라 세 가지 유용한 방법이 있습니다.
# show differences between index and working tree
# that is, changes you haven't staged to commit
git diff [filename]
# show differences between current commit and index
# that is, what you're about to commit
# --staged does exactly the same thing, use what you like
git diff --cached [filename]
# show differences between current commit and working tree
git diff HEAD [filename]
디렉토리에서 재귀 적으로 작동하며 경로가 제공되지 않으면 모든 변경 사항이 표시됩니다.
git add -p
모든 파일을 검사하는 대안 인 것 같습니다 .
git diff --staged [filename]
더 자주 필요한 상황이므로 기본 답변을 추가 하십시오.
나에게 git add -p
모든 단계 화되지 않은 변경 사항 (각 파일의 차이점을 보여줍니다)을 검토하고 커밋과 함께해야 할 변경 사항을 선택하는 가장 유용한 방법입니다 (git 개발자가 생각한 것입니까?) 이들을 모두 준비한 다음을 사용 git commit
하고 다음 커밋에 대해 반복하십시오. 그런 다음 각 커밋이 다양한 파일에서 발생하더라도 유용하거나 의미있는 변경 집합을 만들 수 있습니다. 또한 각 티켓 또는 유사한 활동에 대해 새 브랜치를 작성하고 checkout
(아마도 git stash
전환하기 전에 커밋하지 않으려는 경우 사용)을 사용하여 이들 사이를 전환하는 것이 좋습니다 .하지만 많은 빠른 변경을 수행하는 경우 어려움이 있습니다. 자주 병합하는 것을 잊지 마십시오.
변경 사항을 커밋하고 있음을 기억하십시오파일이 아닌 .
이러한 이유로 git add -p
변경 사항을 추가하는 데 사용하지 않는 경우는 매우 드 rare니다 .
글쎄, 당신이 파일 목록에 관심이없는 내 경우. 그들 모두를 보여주십시오.
git add
파일 목록으로 이미 실행 한 경우 :
$ git diff --cached $(git diff --cached --name-only)
의 최신 버전에서는 다음과 같은 동의어를 git
사용할 --staged
수도 있습니다.--cached
.
--cached
옵션을 추가하지 않고 파일을 추가하지 않은 경우에도 마찬가지 입니다.
$ git diff $(git diff --name-only)
"캐시 된"옵션에 대한 Git 명령 별명 :
$ git config --global alias.diff-cached '!git diff --cached $(git diff --cached --name-only)'
git-friendly 텍스트 편집기를 사용할 수도 있습니다. 수정 된 라인의 색상, 추가 된 라인의 다른 색상, 삭제 된 라인의 다른 색상 등을 표시합니다.
이를 수행하는 좋은 텍스트 편집기는 GitHub의 Atom 1.0 입니다.
[filename]
는 선택적 인수 를 나타냅니다.)*
셸을 사용하면 모든 파일을 셸에 표시 할 수 있으므로 하위 디렉토리에있는 경우 전체 저장소가 아닌 해당 하위 디렉토리의 항목 만 가져옵니다. 숨겨진 파일의 변경 사항이 누락됩니다.