programing

Git: "추적되지 않은" 파일만 나열(또한 사용자 지정 명령)

starjava 2023. 6. 11. 10:14
반응형

Git: "추적되지 않은" 파일만 나열(또한 사용자 지정 명령)

다음과 같은 명령을 사용할 수 있는 방법이 있습니까?git ls-files추적되지 않은 파일만 표시하시겠습니까?

삭제된 모든 파일을 처리하기 위해 다음 명령을 사용하기 때문입니다.

git ls-files -d | xargs git rm

추적되지 않은 파일에 대해서도 비슷한 것을 원합니다.

git some-command --some-options | xargs git add

나는 찾을 수 있었습니다.-o에 대한 선택권.git ls-files하지만 이것은 무시된 파일도 보여주기 때문에 제가 원하는 것이 아닙니다.저는 또한 다음과 같은 길고 추악한 명령을 내릴 수 있었습니다.

git status --porcelain | grep '^??' | cut -c4- | xargs git add

제가 여기서 사용할 수 있는 더 나은 명령이 있을 것 같습니다.만약 없다면, 어떻게 사용자 지정 git 명령을 만들 수 있습니까?

추적되지 않은 파일을 나열하려면 시도:

git ls-files --others --exclude-standard

출력을 파이프로 연결해야 하는 경우xargs사용하여 흰색 공간을 염두에 두는 것이 현명합니다.git ls-files -z그리고.xargs -0:

git ls-files -z -o --exclude-standard | xargs -0 git add

추적되지 않은 파일을 추가하는 데 적합한 별칭:

au = !git add $(git ls-files -o --exclude-standard)

편집: 참조: git-ls-files

추적되지 않은 파일만 제거하려면 다음을 수행합니다.

경고 디렉토리를 포함하여 추적되지 않은 모든 파일이 제거됩니다.

git clean -df

더하다x특정하게 무시된 파일도 포함하려는 경우.사용합니다git clean -dfx하루 종일 많이.

다음과 같은 스크립트를 작성하는 것만으로 사용자 지정 깃을 만들 수 있습니다.git-whatever그리고 당신의 길에 그것을 가지고 있습니다.

git add -A -n당신이 원하는 것을 할 것입니다. -A추적되지 않거나 수정된 모든 파일을 레포에 추가합니다.-n그것을 만듦dry-run여기서 추가는 수행되지 않지만 추가되었을 각 파일이 나열된 상태 출력이 제공됩니다.

모든 것은 매우 간단합니다.

추적되지 않은 모든 파일의 목록을 가져오려면 git status 명령을 옵션 -u(--untracked-files)와 함께 사용합니다.

git status -u

허용된 응답이 공백이 있는 파일 이름에서 충돌합니다.현재 alias 명령을 업데이트하는 방법을 잘 모르기 때문에 개선된 버전을 여기에 추가하겠습니다.

git ls-files -z -o --exclude-standard | xargs -0 git add

오래된 질문인 것은 알지만 추적되지 않은 파일을 나열하는 측면에서 추적되지 않은 폴더도 나열하는 다른 파일을 추가해야 한다고 생각했습니다.

git clean 연산을 -n(dry run)과 함께 사용하면 다음과 같이 git clean 연산을 사용하여 제거할 파일(.gitignore 파일 포함)을 표시할 수 있습니다.

git clean -xdn

이렇게 하면 추적되지 않는 모든 파일과 모든 폴더를 표시할 수 있습니다.매개 변수:

  • x추적되지 않은 모든 파일을 표시합니다(git 및 기타에서 무시한 빌드 출력 등 포함).)
  • d추적되지 않은 디렉터리 표시
  • n그리고 가장 중요한 것은! - 모의 실행. 즉, 실제로 아무것도 삭제하지 않고, 결과를 표시하기 위해 깨끗한 메커니즘을 사용하는 것입니다.

당신이 잊어버릴 경우를 대비해 이렇게 하는 것은 약간 안전하지 않을 수 있습니다.-n그래서 저는 보통 git config에 별칭을 붙입니다.

잠재적으로 추가할 파일을 찾는 경우.의 입니다.git show하지만 다른 것들도 많이 포함되어 있습니다.다음 명령은 다른 모든 항목 없이 동일한 파일 목록을 가져오는 데 유용합니다.

 git status --porcelain | grep "^?? " | sed -e 's/^[?]* //'

이것은 파이프라인에서 결합되어 특정 패턴과 일치하는 파일을 찾은 다음 파이프라인으로 연결할 때 유용합니다.git add.

git status --porcelain | grep "^?? "  | sed -e 's/^[?]* //' | \
egrep "\.project$|\.settings$\.classfile$" | xargs -n1 git add

제가 확인한 모든 이전 답변에는 커밋할 파일도 나열됩니다.에▁to▁which▁subject▁here▁that▁files▁listso▁are다▁not니▁in습있▁rep▁and▁only▁and▁yet▁easy▁simple▁solution▁is▁a▁the여▁not이션솔루기의 대상이 되지 않는 파일만 나열된 간단하고 쉬운 솔루션이 있습니다..gitignore.

git status --porcelain | awk '/^\?\?/ { print $2; }'

또는

git status --porcelain | grep -v '\?\?'

저는 이것이 원래 포스터가 의도했던 것과 같은 일을 할 것이라고 생각합니다.

git add .

몇 가지 주의 사항 추가:

  • 를 했습니다.git status했습니다.
  • 를 했습니다.git diff 각파에일에 된 각 git status그리고 당신의 변화가 깨끗하다는 것을 확인했습니다.
  • 변경 사항은 자동 장치 테스트로 처리됩니다.
  • 자동화된 통합 테스트를 통해 변경 사항 적용
  • 디버거를 통해 통합 테스트를 실행하고 화이트박스에서 새 코드의 동작을 관찰하여 새 동작을 확인했습니다.
  • 모든 보풀/코드 규약 규칙을 실행하여 통과했습니다.
  • 모든 장치 테스트를 실행했으며 테스트를 통과했습니다.
  • 모든 로컬 통합 테스트를 실행했으며 테스트를 통과했습니다.
  • 변경 사항을 앱 검토 환경에 배포하고 다른 변경 사항과 분리하여 엔드 투 엔드로 수동 테스트했습니다.
  • 주요 지점에서 최근에 병합한 후 모든 자동화된 장치 및 통합 테스트를 다시 실행하여 병합 충돌 및 테스트 실패를 해결했습니다.

자, 내 친구, 당신은 준비가 되었습니다.git add .벌을 받지 않고

언급URL : https://stackoverflow.com/questions/3801321/git-list-only-untracked-files-also-custom-commands

반응형