로컬 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 변경을 없애기 위해 사용할 수 있는 다양한 방법이 있습니다. 공개 리포지토리로 작업할 때 주의하십시오.
John is a Git and PowerShell geek. He uses his expertise in the version control system to help businesses manage their source code. According to him, Shell scripting is the number one choice for automating the management of systems.
LinkedIn