힘내 상태-특정 디렉토리에서만 변경 사항을 표시하는 방법이 있습니까?


136

그림과 같이 마지막 커밋 이후 수정 된 파일 목록을보고 git status싶지만 단일 디렉토리에있는 파일에만 관심이 있습니다. 이것을 할 수있는 방법이 있습니까? 나는 시도 git status <directory>했지만 이것이 완전히 다른 것처럼 보입니다 ( git add <directory>처음 쓴 경우 변경된 모든 파일을 나열합니다 ).

git-status에 대한 문서는 git-commit과 동일한 옵션을 허용한다는 사실을 제외 하고는별로 설명하지 않지만 git-commit의 목적은 변경된 파일 목록을 표시하는 것이 아닙니다.

답변:


199

디렉토리 내에서 :

git status .

모든 경로를 실제로 사용할 수 있으며 다음 구문을 사용하십시오.

git status <directoryPath>

예를 들어 경로가 "my / cool / path / here"인 디렉토리의 경우

git status my/cool/path/here

3
감사! 또한 'git status <directory>'는 내가 기대했던대로하고있는 것 같습니다. 솔직히 전에 어떤 문제가 있었는지 기억하지 못합니다 ... 아마도 다른 git 버전 dunno의 문제 일 수 있습니다.
Kuba Suder

문제가 없으며 아마도 최신 버전의 git이 일을 더 쉽게하는 것처럼 보입니다.
Sam Doidge

3
그러나 행동은 1.6에서 1.7로 확실히 바뀌 었습니다. 1.7의 OP 요구 사항을 충족하지만 1.6은 전체 리포지토리에서 계속됩니다.
colgur

31

git status동일한 옵션을 사용하는 이유 는에 전달한 것과 동일한 옵션을 사용하여 커밋 한 경우 어떻게되는지 보여주기 git commit위함입니다 . 이와 관련하여 정말 입니다.git statusgit statusgit statusgit commit --preview

원하는 것을 얻으려면 단계적 변경 사항을 보여주는이 작업을 수행 할 수 있습니다.

git diff --stat --cached -- <directory_of_interest>

그리고 이것은 비 단계적 변화를 보여줍니다 :

git diff --stat -- <directory_of_interest>

또는 이것은 둘 다 표시합니다.

git diff --stat HEAD -- <directory_of_interest>

2
이것은 git-status처럼 새로 생성 된 (추적되지 않은) 파일을 표시하지 않지만 부분적으로 작동합니다.
Kuba Suder

네, 어떤 보고서가 필요한지 잘 모르겠습니다. 준비되지 않은 파일을 확인해야하는 경우 git ls-files --others <directory_in_question>또는을 시도하십시오 ls-files -o.
CB Bailey

git ls-files -o스테이지되지 않은 디렉토리의 파일을 재귀 적으로 git status표시하고 최상위 디렉토리 만 표시합니다. 그리고 대체 할 수있는 모든 컬러 코딩 등 을 작성 git diff, git ls-files출력 및 재생성해야합니다 . 나는 또한 이것에 대한 해결책을 정말로보고 싶다! git statusgit status
피터 V. Mørch

14

가장 간단한 해결책 :

  1. 디렉토리로 이동
  2. git status | grep -v '\.\.\/'

물론 이것은 색상을 버립니다.


필요한 경우 수정 사항을 추가하여 색상을 되돌릴 수 있습니다. 예 1 예 2
카슨

2

참고로 git 디렉토리로 이동하지 않고 git 통계 확인을 단순화하면;

### 파일 만들기
sudo nano / usr / local / bin / gitstat

### 넣어

#! / usr / bin / env bash

dir = $ 1

만약 [[$ dir == ""]]; 그때
    echo "디렉토리가 필요합니다!"
    출구
fi

echo " '$ dir'에 대한 Git 통계."

git --git-dir = $ dir / .git --work-tree = $ dir diff --stat

### exec perm 제공
sudo chmod + x / usr / local / bin / gitstat

그리고 간단한 스크립트를 호출합니다 gitstat /path/to/foo-project. foo-project그냥하는 동안 또는 gitstat .보다 짧거나 git status -s, 항상 GUI 대신 콘솔을 사용하는 경우 에도 사용할 수 있습니다 .git diff --statgit diff --stat HEAD

크레딧 :

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