내 저장소의 하위 폴더에서 git status를 수행하면 상위 폴더의 상태도 포함됩니다.
git-status를 특정 폴더로 제한하는 방법이 있습니까?
답변
git status .
현재 디렉터리 및 하위 디렉터리의 상태를 표시합니다.
예를 들어,이 트리에서 주어진 파일 (숫자) :
a/1
a/2
b/3
b/4
b/c/5
b/c/6
하위 디렉토리 “b” git status
에서 전체 트리에 새 파일을 표시합니다.
% git status
# On branch master
#
# Initial commit
#
# Changes to be committed:
# (use "git rm --cached <file>..." to unstage)
#
# new file: ../a/1
# new file: ../a/2
# new file: 3
# new file: 4
# new file: c/5
# new file: c/6
#
그러나 git status .
“b”이하의 파일 만 표시합니다.
% git status .
# On branch master
#
# Initial commit
#
# Changes to be committed:
# (use "git rm --cached <file>..." to unstage)
#
# new file: 3
# new file: 4
# new file: c/5
# new file: c/6
#
아래가 아닌이 하위 디렉토리 만
git status .
“b”아래의 모든 파일을 재귀 적으로 표시합니다. “b”에있는 파일 만 표시하고 아래에는 표시하지 않으려면 파일 목록 만 (디렉토리 제외)에 전달해야 git status
합니다. 셸에 따라 약간 이상합니다.
Zsh
zsh에서는 “glob 한정자”를 사용하여 일반 파일을 선택할 수 있습니다 (.)
. 예를 들면 :
% git status *(.)
On branch master
Initial commit
Changes to be committed:
(use "git rm --cached <file>..." to unstage)
new file: 3
new file: 4
세게 때리다
Bash에는 glob 한정자가 없지만 GNU find
를 사용 하여 일반 파일을 선택한 다음 다음과 같이 전달할 수 있습니다 git status
.
bash-3.2$ find . -type f -maxdepth 1 -exec git status {} +
On branch master
Initial commit
Changes to be committed:
(use "git rm --cached <file>..." to unstage)
new file: 3
new file: 4
이 사용 -maxdepth
A는 GNU 찾아 확장합니다. POSIX의 발견은 없습니다 -maxdepth
,하지만 당신은이 작업을 수행 할 수 있습니다
bash-3.2$ find . -path '*/*' -prune -type f -exec git status {} +
On branch master
Initial commit
Changes to be committed:
(use "git rm --cached <file>..." to unstage)
new file: 3
new file: 4
답변
일부 배관 명령은 디렉토리를 매개 변수로 사용합니다.
git ls-files -t -o -m aDirectory
모든 파일이 변경되었지만 업데이트되지 않았거나 (스테이지에 추가되지 않음) 추적되지 않은 파일을 제공합니다. 그리고 그것은 디렉토리입니다.
이 스레드에 쓰여진 것처럼 git ls-files는 ‘ --added
옵션을 지원하지 않습니다 .
더 근본적인 이유는
ls-files
배관이 지수 에 관한 것이기 때문 입니다.
추가 된 것은 인덱스와 작업 트리 간의 비교 가 아닙니다 .
HEAD 커밋과 인덱스 사이에 있으며 ls-files plumbing에 속하지 않습니다.
따라서 여기에 언급 된 명령을 사용합니다 .
git diff-index --name-only -B -R -M -C HEAD src
추가되지 않은 파일과 추가 된 파일을 모두 제공합니다.
git diff-files --name-only -B -R -M -C src
추가되지 않은 파일 만 제공합니다. (다시 쓰기, 이름 변경, 복사 등을 감지하는 동안)
배관 명령에서 평소와 같이 일부 스크립팅이 순서대로 진행됩니다.)
답변
불완전하지만 관심있는 디렉토리 내에서도 작동합니다.
git status | grep -v ' \.\./'
그러면 상대 경로에서 상향 참조가 필요한 모든 디렉토리가 숨겨집니다.
다른 쪽 끝에서 색상이 튀어 나오게하려면 다음 color.status
과 always
같이 설정 하십시오 .
git config color.status always
답변
git status
마법의 단어 glob
와 사용하여 pathspec을 제공하여 현재 디렉토리 (하위 폴더없이) 로 제한 할 수 있습니다 *:
.
git status ':(glob)*'
답변
내가 git을 시도했을 때 그렇게 할 방법을 찾지 못했습니다.
나는 결국 :
x@x:~/x$ git status
# On branch master
# Untracked files:
# (use "git add <file>..." to include in what will be committed)
#
# b
# main/a
nothing added to commit but untracked files present (use "git add" to track)
x@x:~/x$ git status | grep main
# main/a
답변
cd YOUR_REQUIRED_DIRECTORY,
git status.