[git] git : 존재하지 않는 모든 파일을 무시하는 방법?
자식 리포지토리에서 추적되지 않은 모든 파일과 폴더를 무시하는 편리한 방법이 있습니까?
(에 대해 알고 .gitignore
있습니다.)
따라서 git status
다시 깨끗한 결과를 제공 할 것입니다.
답변
이미 말했듯이 상태에서 제외하려면 다음을 사용하십시오.
git status -uno # must be "-uno" , not "-u no"
대신 현재 추적되지 않은 파일을 영구적으로 무시하려면 프로젝트 루트에서 다음을 시작하십시오.
git status --porcelain | grep '^??' | cut -c4- >> .gitignore
이후의 모든 호출 git status
은 해당 파일을 명시 적으로 무시합니다.
업데이트 : 위의 명령에는 약간의 단점이 있습니다. .gitignore
아직 파일 이 없으면 gitignore가 자체를 무시합니다! 이는 파일 이 실행 .gitignore
되기 전에 파일 이 생성되기 때문에 발생합니다 git status --porcelain
. 따라서 .gitignore
아직 파일 이 없으면 다음을 사용하는 것이 좋습니다.
echo "$(git status --porcelain | grep '^??' | cut -c4-)" > .gitignore
이 완료 서브 쉘 생성 하기 전에 을.gitignore
파일이 만들어집니다.
명령 설명 내가 많은 투표를 받고있을 때 (감사합니다!) 나는 그 명령을 조금 더 잘 설명 할 것이라고 생각합니다.
git status --porcelain
대신 사용git status --short
하기 때문에 수동 상태가 “스크립트 쉬운 구문 분석 형식으로 출력을 지정합니다.이 짧은 출력과 비슷하지만 자식 버전에서 안정적인 관계없이 사용자 구성에 남아있을 것이다.” 따라서 파싱 성과 안정성이 모두 있습니다.grep '^??'
git status manual??
에 따르면 추적되지 않은 파일에 해당하는로 시작하는 행만 필터링 합니다.cut -c4-
모든 줄의 처음 3자를 제거하여 추적되지 않은 파일의 상대 경로를 제공합니다.|
기호는 파이프 다음 명령의 입력 이전 명령의 출력을 전달;>>
및>
기호는 리디렉션 연산자 파일에 덮어 쓰기 또는 이전 명령의 출력을 추가 / 각각 새로운 파일을 생성한다.
및 대신에 사용sed
하는 것을 선호하는 사람들을위한 또 다른 변형 다음 과 같은 다른 방법이 있습니다.grep
cut
git status --porcelain | sed -n -e 's/^?? //p' >> .gitignore
답변
이러한 파일을 영구적으로 무시하려면 파일을 추가하는 간단한 방법 .gitignore
은 다음과 같습니다.
- 자식 트리의 루트로 변경하십시오.
git ls-files --others --exclude-standard >> .gitignore
이것은 추적되지 않은 디렉토리 내의 모든 파일을 열거하며, 원하는 디렉토리 일 수도 있고 아닐 수도 있습니다.
답변
매뉴얼 에서 찾았습니다
mode 매개 변수는 추적되지 않은 파일 처리를 지정하는 데 사용됩니다. 선택 사항입니다. 기본값은 모두이며, 지정된 경우 옵션에 붙어 있어야합니다 (예 : -uno는 아니지만 -uno).
git status -uno
답변
두 가지 방법:
git-status에 “-uno”인수를 사용하십시오. 예를 들면 다음과 같습니다.
[jenny@jenny_vmware:ft]$ git status
# On branch ft
# Untracked files:
# (use "git add <file>..." to include in what will be committed)
#
# foo
nothing added to commit but untracked files present (use "git add" to track)
[jenny@jenny_vmware:ft]$ git status -uno
# On branch ft
nothing to commit (working directory clean)
또는 파일과 지시문을 .gitignore에 추가 할 수 있으며,이 경우 절대 표시되지 않습니다.
답변
-u no
스테이지되지 않은 파일도 표시되지 않습니다. -uno
원하는대로 작동하고 스테이지되지 않은 상태로 표시되지만 추적되지 않은 상태로 숨 깁니다.
답변
OS 와 같은 Unix를 사용하지 않는 경우 PowerShell을 사용하여 Windows에서 작동 합니다.
git status --porcelain | ?{ $_ -match "^\?\? " }| %{$_ -replace "^\?\? ",""} | Add-Content .\.gitignore
그러나 .gitignore
파일에는 빈 줄이 새로 있어야합니다. 그렇지 않으면 내용이 있더라도 마지막 줄에 텍스트가 추가됩니다.
이것은 더 나은 대안이 될 수 있습니다.
$gi=gc .\.gitignore;$res=git status --porcelain|?{ $_ -match "^\?\? " }|%{ $_ -replace "^\?\? ", "" }; $res=$gi+$res; $res | Out-File .\.gitignore
답변
당신은 할 경우 많은 비 추적 파일을, 그리고 “싶지 않아 gitignore
, 그들 모두”때문에,주의 자식 1.8.3 (2013 년 4 월 22D) , git status
을 언급 할 것이다 --untracked-files=no
당신이에 해당 옵션을 추가하지 않은 경우에도를 처음!
”
git status
“은 사용자에게--untracked=no
옵션이 너무 오래 걸릴 때 옵션 을 사용하는 것을 제안합니다 .