HOWTO · Git
로컬 Git 변경 사항을 제거하는 데 사용되는 다양한 방법
Git의 로컬 변경 사항을 제거하는 데 사용되는 다양한 방법.
이 페이지의 내용
이 기사에서는 Git의 로컬 변경 사항을 폐기하기 위해 사용할 수 있는 다양한 방법에 대해 설명합니다. 리포지토리를 복제했다고 가정하고 다음과 같은 로컬 변경 사항을 제거하는 방법을 살펴보겠습니다.
- 단계적 변경
- 미단계 변경
- 추적되지 않은 변경 사항
- 커밋된 변경 사항
- 커밋 및 푸시된 변경 사항
로컬 Git 변경 사항을 제거하는 데 사용되는 다양한 방법
방금 Git 리포지토리를 복제하고 몇 가지 파일을 변경했으며 커밋을 위해 파일을 준비했다고 가정하면 동일한 파일을 어떻게 버릴 수 있습니까?
--hard 플래그와 함께 git reset 명령을 사용하여 단계별 변경 사항을 삭제할 수 있습니다. 아래 그림과 같이 명령을 실행합니다.
$ git reset --hard
다음 시나리오에서는 리포지토리의 일부 파일을 변경했지만 아직 커밋을 준비하지 않았습니다. 이러한 변경 사항을 어떻게 폐기합니까?
두 가지 옵션이 있습니다. git reset --hard 명령 또는 git checkout <file> 명령을 사용할 수 있습니다. 여러 파일을 처리하는 경우 아래와 같이 후자를 실행하십시오.
$ git checkout .
이렇게 하면 Git이 모든 파일을 마지막 커밋 상태로 복원하도록 지시하여 준비되지 않은 변경 사항을 버립니다.
리포지토리에 새 파일을 도입한 또 다른 시나리오를 살펴보겠습니다. 이러한 파일은 추적되지 않는 파일에 속합니다.
이 파일을 어떻게 없앨 수 있습니까?
git clean 명령이 작업을 수행합니다. 명령을 실행하는 방법은 다음과 같습니다.
$ git clean -f
이 명령의 효과는 되돌릴 수 없습니다. 무엇이 손실되는지 확인하기 위해 명령을 모의 실행으로 실행하는 것이 좋습니다.
아래 그림과 같이 명령을 실행할 수 있습니다.
$ git clean -f -n
추적되지 않는 디렉터리를 제거하려면 -d 플래그를 추가할 수 있습니다.
보너스 팁
변경 사항을 버리지 않고 인덱스에서 제외하려는 경우 숨길 수 있습니다. Git의 보관은 인덱스의 변경 사항을 다른 곳에 안전하게 저장하는 것을 의미합니다.
다시 필요할 때 git stash pop 명령을 실행하십시오.
일부 변경 사항을 이미 커밋했고 이를 제거해야 하는 경우에는 어떻게 합니까?
이 시점에서 HEAD 포인터를 최근에 생성된 커밋의 부모 노드로 이동해야 합니다. 아래와 같이 git reset --hard 명령을 사용합니다.
$ git reset --hard HEAD~1
이렇게 하면 HEAD@{0}의 커밋에 의해 도입된 변경 사항이 사라집니다.
git reset --hard@{u}를 실행하여 분기의 로컬 커밋을 버리고 업스트림 추적 분기와 동일하게 만들 수도 있습니다.
변경 사항을 이미 커밋한 경우 파일에 도입된 변경 사항을 되돌리고 원격으로 푸시하는 커밋을 생성할 수 있습니다.
$ git revert <commit-hash>
이렇게 하면 새 커밋이 생성되고 원격으로 푸시할 수 있습니다.
간단히 말해서 로컬 Git 변경을 없애기 위해 사용할 수 있는 다양한 방법이 있습니다. 공개 리포지토리로 작업할 때 주의하십시오.