현재 Git 작업 트리에서 로컬(추적되지 않은) 파일을 제거하는 방법은 무엇입니까?

StackOverflow https://stackoverflow.com/questions/61212

  •  09-06-2019
  •  | 
  •  

문제

현재 작업 트리에서 추적되지 않은 로컬 파일을 어떻게 삭제합니까?

도움이 되었습니까?

해결책

Git 문서에 따르면 git clean

작업 트리에서 추적되지 않은 파일 제거


1단계는 다음을 사용하여 삭제될 항목을 표시하는 것입니다. -n 옵션:

# Print out the list of files which will be removed (dry run)
git clean -n

클린스텝 - 조심하세요:파일이 삭제됩니다:

# Delete the files from the repository
git clean -f
  • 디렉토리를 제거하려면 다음을 실행하십시오. git clean -f -d 또는 git clean -fd
  • 무시된 파일을 제거하려면 다음을 실행하십시오. git clean -f -X 또는 git clean -fX
  • 무시된 파일과 무시되지 않은 파일을 제거하려면 다음을 실행하십시오. git clean -f -x 또는 git clean -fx

메모 케이스의 차이 X 후자의 두 명령에 대해.

만약에 clean.requireForce 구성에서 "true"(기본값)로 설정되어 있으면 다음을 지정해야 합니다. -f 그렇지 않으면 실제로 아무 일도 일어나지 않을 것입니다.

다시보기 git-clean 자세한 내용은 문서를 참조하세요.


옵션

-f, --force

git 구성 변수 clean.requireforce가 거짓으로 설정되지 않으면 Git Clean이 주어지지 않는 한 실행을 거부합니다. -f, -n 또는 -i.

-x

표준을 사용하지 마십시오. $GIT_DIR/info/exclude, 그러나 여전히 주어진 무시 규칙을 사용하십시오. -e 옵션.이를 통해 빌드 제품을 포함하여 추적되지 않은 모든 파일을 제거 할 수 있습니다.이것은 깨끗한 빌드를 테스트하기 위해 깨끗한 작업 디렉토리를 만들기 위해 (Git Reset과 함께) 사용될 수 있습니다.

-X

Git에서 무시한 파일만 제거합니다.이것은 처음부터 모든 것을 재건하는 데 유용 할 수 있지만 수동으로 생성 된 파일을 유지합니다.

-n, -dry-run

실제로 아무것도 제거하지 말고 수행할 작업을 보여주세요.

-d

추적되지 않는 파일과 함께 추적되지 않는 디렉터리를 제거합니다.추적되지 않은 디렉토리가 다른 GIT 저장소에 의해 관리되는 경우 기본적으로 제거되지 않습니다.사용 -f 실제로 그러한 디렉토리를 제거하려면 두 번 옵션.

다른 팁

사용 git clean -f -d 그것을 확인하기 위해 디렉토리 도 제거됩니다.

그런 다음 파일이 실제로 사라졌는지 확인할 수 있습니다. git status.

나는 이전에 아무도 이것을 언급하지 않았다는 것에 놀랐습니다.

git clean -i

그것은 다음을 의미합니다. 인터렉티브 영향을 받는 파일을 포함/제외할 수 있는 가능성을 제공하여 삭제될 내용에 대한 빠른 개요를 얻을 수 있습니다.전반적으로 필수 실행보다 여전히 빠릅니다. --dry-run 본격적인 청소 전.

당신은 던져야 할 것입니다 -d 빈 폴더도 관리하고 싶다면.결국에는 멋진 별칭이 만들어집니다.

git iclean

즉, 대화형 명령을 추가로 손에 쥐는 것은 숙련된 사용자에게 피곤할 수 있습니다.요즘에는 이미 언급한 것을 사용합니다. git clean -fd

추적되지 않은 디렉터리가 자체 Git 저장소인 경우(예:하위 모듈)을 사용해야 합니다. -f 두 배:

git clean -d -f -f

추적되지 않은 파일을 제거하는 간단한 방법

추적되지 않은 모든 파일을 제거하려면 간단한 방법은 먼저 모두 추가하세요. 그리고 저장소를 재설정 아래

git add --all
git reset --hard HEAD

좋아요 git stash push -u 왜냐하면 당신은 그것들을 모두 취소할 수 있기 때문입니다 git stash pop.

편집하다:또한 숨김 파일에 추적되지 않은 파일을 표시하는 방법을 찾았습니다(예: git show stash@{0}^3) https://stackoverflow.com/a/12681856/338986

편집2: git stash save 더 이상 사용되지 않습니다. push.@script-wolf님 감사합니다.

이것이 내가 항상 사용하는 것입니다:

git clean -fdx

매우 큰 프로젝트의 경우 두어 번 실행하는 것이 좋습니다.

자식 청소 당신이 찾고있는 것입니다.작업 트리에서 추적되지 않은 파일을 제거하는 데 사용됩니다.

특정 하위 디렉터리에서 추적되지 않은 파일을 제거해야 하는 경우,

git clean -f {dir_path}

추적되지 않은 디렉터리/파일과 무시된 파일을 삭제하는 방법을 결합했습니다.

git clean -fxd {dir_path}

그 후에는 다음에서만 파일을 수정하게 됩니다. git status.

git clean -fd 디렉토리를 제거합니다

git clean -fX 무시된 파일을 제거합니다

git clean -fx 무시된 파일과 무시되지 않은 파일을 제거합니다.

위의 모든 옵션을 다음과 같이 조합하여 사용할 수 있습니다.

git clean -fdXx

자세한 내용은 Git 설명서를 확인하세요.

이 저장소 + 하위 모듈에서 모든 추가 폴더 및 파일을 제거합니다.

이렇게 하면 새로운 클론과 동일한 상태가 됩니다.

git clean -ffdx

이 저장소의 모든 추가 폴더와 파일을 제거하지만 하위 모듈은 제거하지 않습니다.

git clean -fdx

추가 폴더만 제거하고 파일은 제거하지 않습니다(예:빌드 폴더)

git clean -fd

추가 폴더 + 무시된 파일 제거(새로 추가된 파일은 제외)

파일이 무시되지 않았고 아직 체크인되지 않은 경우 그대로 유지됩니다.대문자 X에 주목하세요.

git clean -fdX

새로운 대화형 모드

git clean

좋아요, 삭제 중 원치 않는 추적되지 않은 파일 및 폴더 사용하기 쉽습니다 git 명령줄에서 다음과 같이 하세요:

git clean -fd

이중 점검 기록을 남기지 않고 파일과 폴더를 삭제하므로 그렇게 하기 전에...

또한 이 경우에는 -f 힘과 -d 디렉토리를 의미합니다...

따라서 파일만 삭제하려면 다음을 사용할 수 있습니다. -f 오직:

git clean -f

(디렉터리) 및 파일을 삭제하려면 다음과 같이 추적되지 않는 디렉터리 및 파일만 삭제할 수 있습니다.

git clean -fd

또한 다음을 사용할 수 있습니다. -x git이 무시하는 파일을 포함하기 위한 플래그입니다.모든 것을 삭제하려는 경우 도움이 될 것입니다.

그리고 추가 -i 플래그를 사용하면 git이 이동 중에 파일을 하나씩 삭제할 권한을 요청하게 됩니다.

확실하지 않고 먼저 확인하고 싶다면 추가하세요. -n 깃발.

사용 -q 삭제가 성공한 후 보고서를 보고 싶지 않은 경우.

더욱 기억에 남을 수 있도록 아래 이미지도 만들었습니다. 특히 많은 사람들이 혼동하는 것을 보았습니다. -f 가끔씩 폴더를 청소하거나 섞어서 사용해보세요!


deleting unwanted untracked files and folder

더 좋은 방법은 다음을 사용하는 것입니다.git clean

git clean -d -x -f

디렉터리를 포함하여 추적되지 않은 파일이 제거됩니다. (-d) 및 파일은 다음에서 무시됩니다. git (-x).

또한, -f 논쟁 -n 수행하다 dry-run 또는 -i 대화형 모드의 경우 무엇이 제거될지 알려줍니다.

사용자 대화형 접근 방식:

git clean -i -fd

Remove .classpath [y/N]? N
Remove .gitignore [y/N]? N
Remove .project [y/N]? N
Remove .settings/ [y/N]? N
Remove src/com/arsdumpgenerator/inspector/ [y/N]? y
Remove src/com/arsdumpgenerator/manifest/ [y/N]? y
Remove src/com/arsdumpgenerator/s3/ [y/N]? y
Remove tst/com/arsdumpgenerator/manifest/ [y/N]? y
Remove tst/com/arsdumpgenerator/s3/ [y/N]? y

-i 대화형
-f 강제
-d 디렉토리의 경우
-x 무시된 파일의 경우(필요한 경우 추가)

메모: 추가하다 -N 또는 --드라이런 단지 그것이 무엇을 할 것인지 확인하기 위해서입니다.

git clean -f -d -x $(git rev-parse --show-cdup) 저장소 디렉터리 트리 내에서 호출하는 위치에 상관없이 루트 디렉터리에 정리를 적용합니다.지금 작업 중인 폴더를 떠나도록 강요하지 않고 현재 있는 곳에서 바로 정리하고 커밋할 수 있기 때문에 나는 항상 이 기능을 사용합니다.

플래그를 확인하세요. -f, -d, -x 귀하의 필요에 맞게:

-d
       Remove untracked directories in addition to untracked files. If an
       untracked directory is managed by a different Git repository, it is
       not removed by default. Use -f option twice if you really want to
       remove such a directory.

-f, --force
       If the Git configuration variable clean.requireForce is not set to
       false, git clean will refuse to delete files or directories unless
       given -f, -n or -i. Git will refuse to delete directories with .git
       sub directory or file unless a second -f is given. This affects
       also git submodules where the storage area of the removed submodule
       under .git/modules/ is not removed until -f is given twice.

-x
       Don't use the standard ignore rules read from .gitignore (per
       directory) and $GIT_DIR/info/exclude, but do still use the ignore
       rules given with -e options. This allows removing all untracked
       files, including build products. This can be used (possibly in
       conjunction with git reset) to create a pristine working directory
       to test a clean build.

다른 플래그도 사용할 수 있습니다. 확인해 보세요. git clean --help.

나를 위해 다음과 같은 일만했습니다.

git clean -ffdx

다른 모든 경우에는 메시지를 받았습니다. "디렉터리 건너뛰기" 일부 하위 디렉토리의 경우.

제가 방금 발명하고 시도한 이러한 상황에 대한 생활 꿀팁은 다음과 같습니다(완벽하게 작동합니다).

git add .
git reset --hard HEAD

조심하세요! 반드시 필요한 변경 사항을 커밋합니다. (추적되지 않은 파일에서도) 이것을 수행하기 전에.

'git status'에 의해 추적되지 않은 것으로 나열된 파일을 삭제하려는 경우

git stash save -u
git stash drop "stash@{0}"

'git clean'은 git에 의해 무시되는 파일을 삭제하기 때문에 이것을 'git clean'보다 선호하므로 다음 빌드는 모든 것을 재건해야하며 IDE 설정도 잃을 수도 있습니다.

실제로 삭제하기 전에 삭제될 항목을 확인하려면 다음을 수행하세요.

git clean -d -n

다음과 같이 출력됩니다.

Sample.txt를 제거합니다.

이전 명령의 출력에 나열된 모든 항목을 삭제하려면 다음을 수행하십시오.

git clean -d -f

다음과 같이 출력됩니다.

Sample.txt 제거

추적되지 않은 파일을 제거하려면 먼저 명령을 사용하여 치료의 영향을 받는 파일을 확인해야 합니다.

git clean -fdn

삭제될 파일 목록이 표시됩니다.이제 해당 파일을 실제로 삭제하려면 다음 명령을 사용하십시오.

git clean -fd

`git clean` 명령을 실행할 때 주의하세요.

항상 사용 -n 실제 명령을 실행하기 전에 어떤 파일이 제거되는지 표시됩니다.

git clean -n -d 
git clean -f -d

기본적으로, git clean 무시되지 않는 추적되지 않은 파일만 제거합니다..gitignore 또는 기타 무시 파일의 패턴과 일치하는 파일은 제거되지 않습니다.해당 파일도 제거하려면 -x clean 명령에.

git clean -f -d -x

대화형 모드도 사용할 수 있습니다. -i clean 명령으로

git clean -x -i

대안으로

커밋되지 않은 작업을 삭제하는 것이 안전하다고 100% 확신하지 못하는 경우 대신 스태싱을 사용할 수 있습니다.

git stash --all

또한 디렉터리가 지워지지만 다음을 사용하여 언제든지 파일을 검색할 수 있는 유연성을 제공합니다. 숨기는 장소 ~와 함께 적용하다 또는 .그런 다음 나중에 다음을 사용하여 숨김 항목을 지울 수 있습니다.

git stash drop // or clean

정상 git clean 명령은 내 명령으로 추적되지 않은 파일을 제거하지 않습니다. git version 2.9.0.windows.1.

$ git clean -fdx     # doesn't remove untracked files
$ git clean -fdx *   # Append star then it works!

git clean -f to remove untracked files from working directory.

제 블로그에서 몇 가지 기본 사항을 다루었습니다. 자식 소개 기본 명령

권장되는 명령 Git 문서에서 추적되지 않은 파일 제거 ~이다 git clean

git clean - 작업 트리에서 추적되지 않은 파일 제거

제안된 방법: 다음을 사용하여 대화형 모드 git clean -i그래서 우리는 그것을 통제할 수 있습니다.사용 가능한 나머지 옵션을 확인하세요.

사용 가능한 옵션:

git clean 
    -d -f -i -n -q -e -x -X (can use either)

설명:

1. -디

추적되지 않는 파일과 함께 추적되지 않는 디렉터리를 제거합니다.추적되지 않은 디렉토리가 다른 GIT 저장소에 의해 관리되는 경우 기본적으로 제거되지 않습니다.해당 디렉토리를 정말로 제거하려면 -f 옵션을 두 번 사용하십시오.

2.-f, --force

git 구성 변수 clean.requireforce가 False로 설정되지 않으면 -f, -n 또는 -i가 주어지지 않는 한 Git Clean은 실행을 거부합니다.

삼.-i, --interactive

수행할 작업을 표시하고 대화형으로 파일을 정리합니다.자세한 내용은 "대화형 모드"를 참조하십시오.

4.-n, --dry-run

실제로 아무것도 제거하지 말고 수행할 작업을 보여주세요.

5.-q, --조용함

조용하게 오류만 보고하고 성공적으로 제거된 파일은 보고하지 마십시오.

6.-e, --제외=

.gitignore (디렉토리 당) 및 $ git_dir/info/exclude에있는 것 외에도 이러한 패턴은 유효한 무시 규칙 세트에 있다고 생각합니다.

7.-엑스

표준을 사용하지 마십시오.이를 통해 빌드 제품을 포함하여 추적되지 않은 모든 파일을 제거할 수 있습니다.이것은 깨끗한 빌드를 테스트하기 위해 깨끗한 작업 디렉토리를 만들기 위해 (Git Reset과 함께) 사용될 수 있습니다.

8.-엑스

Git에서 무시한 파일만 제거합니다.이는 모든 것을 처음부터 다시 빌드하는 데 유용할 수 있지만 수동으로 생성된 파일은 유지합니다.

아래 git 주석을 사용하여 현재 git 작업 트리에서 추적되지 않은 로컬 파일을 쉽게 제거할 수 있습니다.

git reset [--soft | --mixed [-N] | --hard | --merge | --keep] [-q] [<commit>]

예:

git reset --hard HEAD

연결 :

  1. https://git-scm.com/docs/git-reset
  2. 이전 커밋으로 되돌리려면 'git Reset --hard HEAD'를 어떻게 사용합니까?
  3. 로컬 저장소 분기를 원격 저장소 HEAD와 동일하게 재설정
  4. https://jwiegley.github.io/git-from-the-bottom-up/3-Reset/4-doing-a-hard-reset.html

git 저장소와 모든 하위 모듈을 재귀적으로 정리합니다.

다음 명령은 현재 git 저장소와 모든 하위 모듈을 재귀 적으로 정리합니다.

(git clean -d -x -f && git submodule foreach --recursive git clean -d -x -f)

오-내-zsh ~와 함께 zsh git 플러그인을 통해 훌륭한 별칭을 제공합니다.bash에서도 사용할 수 있습니다.

gclean='git clean -fd'
gpristine='git reset --hard && git clean -dfx'

  • gclean 추적되지 않는 파일 외에도 추적되지 않는 디렉터리를 제거합니다..
  • gpristine 로컬 변경 사항을 하드 재설정하고, 추적되지 않은 디렉토리, 추적되지 않은 파일을 제거하며 .gitignore(디렉토리별) 및 $GIT_DIR/info/exclude에서 읽은 표준 무시 규칙을 사용하지 마세요. 하지만 -e 옵션과 함께 제공된 무시 규칙은 계속 사용하세요.이를 통해 빌드 제품을 포함하여 추적되지 않은 모든 파일을 제거할 수 있습니다.이는 깨끗한 빌드를 테스트하기 위해 깨끗한 작업 디렉토리를 생성하는 데 (아마도 git Reset과 함께) 사용될 수 있습니다..
git clean -f

현재 git에서 추적되지 않은 파일을 제거합니다.

git clean -fd

디렉터리와 파일을 제거하려는 경우 추적되지 않는 디렉터리와 파일만 삭제됩니다.

메모:먼저 디렉터리로 이동하여 정리하려는 분기를 체크아웃합니다.

-i 대화형 모드에서는 무엇이 제거될지 알려주고 목록에서 작업을 선택할 수 있습니다.

  1. 청소하다 파일 [폴더는 나열되지 않으며 정리되지 않습니다]:$ git clean -i

  2. 청소하다 파일 및 폴더: $ git clean -d -i

-d 디렉토리를 포함합니다.


당신이 선택하는 경우 c 목록에서.추적되지 않는 파일/폴더는 삭제되며, 사용자가 엉망으로 만든 파일/폴더도 제거됩니다.*

예를 들어:리모컨의 폴더 구조를 변경하고 변경 사항을 로컬 컴퓨터로 가져오는 경우.처음에 다른 사람이 만든 파일/폴더는 이전 폴더와 재구성한 새 폴더에 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top