Git에서 커밋된 파일 제거

Abdul Jabbar 2022년8월23일
Git에서 커밋된 파일 제거

때때로 우리는 현재 커밋에 중요한 파일을 수동으로 파악하고 작업 디렉토리에서 원하지 않는 파일을 제거해야 한다는 것을 깨닫습니다. 특히 팀에 많은 개발자가 있는 대규모 프로젝트를 빌드하는 경우 수동 프로세스의 경우 어려울 수 있습니다.

저장소에서 잘못된 파일을 커밋했고 지점에서 삭제하려고 한다고 가정합니다. git reset 명령은 Git을 다룰 때 유용한 도구입니다. 이 명령은 특정 Git 커밋 또는 분기의 작업 디렉터리에서 특정 파일을 제거하는 데 사용됩니다. 예를 들어 HEAD가 가리키는 커밋에서 "README.md" 파일을 제거하려면 다음 명령을 실행할 수 있습니다.

git reset -soft HEAD@{1}

다음 명령을 실행하여 작업 디렉토리의 변경 사항을 유지하면서 특정 커밋에서 파일을 제거할 수 있습니다.

git reset HEAD@{1}

커밋에서 파일을 제거하는 데 사용되는 명령은 git reset입니다. 이 명령은 -p -u 옵션과 함께 사용할 수 있습니다. -p 옵션을 사용하면 작업 디렉토리의 변경 사항을 유지하지만 인덱스를 재설정할 수 있습니다. -u 옵션은 인덱스와 작업 디렉토리를 재설정합니다.

다음 예제를 사용하여 커밋에서 파일을 제거하는 방법을 연습해 보겠습니다. 새 커밋을 만들고 file1이라는 파일을 추가했다고 가정합니다. 이제 커밋에서 이 파일을 삭제하려고 합니다. 다음 명령을 사용하여 시작할 수 있습니다.

git reset -p HEAD~1

이 명령은 인덱스와 작업 디렉토리를 다시 커밋 HEAD~1로 재설정하도록 Git에 명령합니다. 커밋을 생성하기 전에 작업 디렉토리에 file2를 추가합니다. 이제 작업 디렉토리에서 이 파일을 삭제하지만 색인에는 유지하려고 합니다. 다음 명령을 사용하여 시작할 수 있습니다.

git reset -u HEAD~1

이 명령은 인덱스와 작업 디렉토리를 HEAD~1 커밋으로 재설정하도록 Git에 명령합니다. 이제 인덱스에 세 개의 파일을 추가했고 file3을 제외한 모든 파일을 인덱스에서 삭제하려고 한다고 가정해 보겠습니다. 다음 명령을 사용하여 시작할 수 있습니다.

git reset -- '-p -- file3'

이 명령은 Git이 file3을 유지하고 동일한 분기 내의 인덱스에서 다른 파일을 삭제하도록 명령합니다. git reset 명령을 사용하여 커밋에서 파일을 제거할 수 있습니다. 이 명령을 -p 옵션과 함께 사용하여 인덱스 및 작업 디렉토리의 변경 사항을 유지하고 커밋에서 파일을 제거할 수 있습니다.

이 명령을 -u 옵션과 함께 사용하여 인덱스와 작업 디렉토리를 재설정하지만 파일은 커밋에 유지할 수 있습니다.

특정 커밋에서 파일을 삭제하려면 git reset 명령을 -hard 옵션과 함께 사용하고 HEAD 뒤에 커밋을 지정할 수 있습니다. 예를 들어 커밋 테스트에서 "README.md" 파일을 제거하려는 경우 다음 명령을 실행할 수 있습니다.

git reset -hard test

git reset --hard 명령은 작업 디렉토리에 대한 모든 변경 사항을 삭제합니다. 일부 파일을 편집하고 다른 파일을 제거한 경우 마지막 명령은 준비 영역에 여전히 존재하는 파일에 대한 변경 사항을 제거합니다.

그러나 파일을 원하지 않고 스테이징 영역에서 삭제하고 추적되지 않는 파일로 만들고 싶다고 가정합니다. 이 경우 --cached 옵션과 함께 git rm 명령을 사용합니다. 작업 디렉토리에서도 제거하려면 해당 명령에서 --cached 옵션을 건너뜁니다.

$ git rm --cached <file-name>

여기에서 파일 복구 프로세스가 거의 완료되었습니다. 관련 없는 파일은 스테이징 영역에서 삭제되었으며 다른 모든 변경 사항은 스테이징됩니다. 이제 git commit 명령을 사용하여 이러한 변경 사항을 분기에 커밋해야 합니다. 이제 커밋을 다시 얻었지만 여기에는 필요하지 않은 파일이 포함되지 않습니다.

$ git commit -m "commit message"
작가: Abdul Jabbar
Abdul Jabbar avatar Abdul Jabbar avatar

Abdul is a software engineer with an architect background and a passion for full-stack web development with eight years of professional experience in analysis, design, development, implementation, performance tuning, and implementation of business applications.

LinkedIn

관련 문장 - Git Commit