Git 변경 취소 | git clean

git clean 명령

git clean 은 작업 디렉터리에서 추적되지 않는 파일을 삭제하는 명령입니다. git status 명령을 사용하여 추적 대칭 않는 파일을 확인하고 수동으로 그들을 제거하는 것은 간단하므로이 명령은 어느 쪽 일까하고 말하면 편의성을 높이기 위해 마련된 것입니다. 일반 rm 명령 마찬가지로 git clean 명령을 취소 할 수없는 때문에이 명령을 실행 할 때 그 추적되지 않는 파일을 정말 삭제해도 좋은지 여부를 다시 확인하십시오.

git clean 은 git reset –hard 명령과 잘 결합됩니다. 이미 설명했듯이 reset 명령이 작용하는 것은 추적 대상이되고있는 파일 만 있기 때문에 추적되지 않는 파일을 정리하기 위해 다른 명령이 필요할 것입니다. 이 두 명령을 함께 사용하여 작업 디렉터리를 특정 커밋 시점과 완전히 동일한 상태로 되돌릴 수 있습니다.

사용법

git clean -n

git clean의 ‘예행 연습’을하는 명령입니다. 이 명령을 실행하면 삭제 된 파일을 표시하지만 실제 삭제되지 않습니다.

git clean -f

추적되지 않는 파일을 현재 디렉터리에서 삭제하는 명령입니다. 설정 옵션 clean.requireForce 이 false 로 설정되지 않은 경우 (이 옵션은 기본적으로 true 입니다)는 -f (force) 플래그는 필수입니다. 이 명령은 추적되지 않는 폴더 나 파일도 .gitignore. 로 지정한 것은 삭제 하지 않습니다.

git clean -f <path>

추적되지 않는 파일을 삭제하지만, 그 범위는 지정된 경로에 한정하는 명령입니다.

git clean -df

현재 디렉터리에서 추적되지 않는 파일 및 추적 대상에서 제외 디렉터리를 삭제합니다.

git clean -xf

현재 디렉터리에서 추적되지 않는 파일 및 Git은 보통 무시되는 파일을 삭제합니다.

보충 설명

git reset –hard 와 git clean -f 두 명령은 로컬 저장소에서 결과의 쇠약 작업을 실시했기 때문에 그것을 없었던 것으로하는 경우에 매우 자주 사용됩니다. 이 두 명령을 실행하면 작업 디렉터리의 상태는 직전의 위탁을 한 시점을 기준으로 돌아가서 그 상태에서 작업을 다시 시작할 수 있습니다.

git clean 빌드 완료 후 작업 디렉터리를 정리하는 경우에도 유용한 명령입니다. 예를 들어이 명령을 실행하면 C 컴파일러가 생성 한 .o 나 .exe 바이너리 파일을 쉽게 제거 할 수 있습니다. 이 작업은 릴리스를 목표로 프로젝트를 패키징 할 때 필수가되는 경우가 있습니다. -x 는이 목적에 유용한 옵션입니다.

또한 git clean 명령이 git reset 명령과 함께 커밋의 내용을 완전히 삭제 해 버리는 몇 Git 명령 중 하나이며, 사용에주의가 필요하다는 것을 잊어서는 안됩니다. 실제로 중요한 커밋의 내용을 잃어 버리는 일이 매우 많기 때문에, 기본적인 조작 임에도 불구 Git 메인테이너가 -f 플래그 지정을 필수 설정하는 일이 자주 있습니다. 이를 설정하는 것이 간단한 git clean 을 실행하여 실수로 모든 것을 잃는 것을 방지 할 수 있습니다.

사용 예

다음 예제는 생성 된 새 파일을 포함하여 작업 디렉터리의 모든 변경 사항을 취소합니다. 여기에서는 이미 여러 스냅 샷을 다하고 있으며, 또한 새로운 실험적인 개발의 중간에 있다고 가정합니다.

# Edit some existing files
# Add some new files
# Realize you have no idea what you're doing

# Undo changes in tracked files
git reset --hard

# Remove untracked files
git clean -df

이 일련의 reset / clean 명령을 실행하면 작업 디렉터리 및 스테이징 영역은 직전의 위탁시와 완전히 동일하게, git status 명령을 실행하면 작업 디렉터리의 내용이 정리 될 취지를 표시합니다. 따라서이 상태에서 다시 시작 할 수 있습니다.

또한 git reset 섹션의 두 번째 예와는 달리 만들어진 새로운 파일 저장소 무대 된 적이 한 번도없는 것으로 유의하십시오. 그 결과이 새로운 파일은 추적 대상이되지 않기 때문에 git reset –hard 명령의 영향을받지 않고 삭제하려면 git clean 명령이 필요합니다.




최종 수정 : 2021-08-26