Git에서 원격 리포지토리를 푸시하기 전에 커밋 실행 취소
이 튜토리얼은 프로젝트 디렉토리의 파일에 대한 변경 사항을 추적하는 데 사용하는 버전 제어 시스템인 Git의 원격 리포지토리로 푸시되지 않은 커밋을 재설정하는 방법을 알려줍니다.
Git에서 커밋은 파일에 대한 변경 사항을 추적하는 데 사용됩니다. 때때로 우리는 파일의 변경 사항을 로컬로 커밋하고 나중에 이러한 변경 사항이 더 이상 관련이 없다고 느낄 수 있습니다.
이제 이 커밋을 원격 저장소로 푸시하는 대신 이 커밋을 재설정하려고 합니다. git reset
명령을 사용하여 아직 원격으로 푸시되지 않은 커밋을 재설정하는 이 작업을 수행할 수 있습니다.
Git에서 원격 리포지토리로 푸시하기 전에 커밋 실행 취소
협업 개발 환경에서 Git을 사용하여 파일에 대한 변경 사항을 추적합니다. Git은 커밋을 사용하여 파일의 변경 사항을 추적하는 이 작업을 수행합니다.
파일에 대한 변경 사항에 만족하면 프로젝트의 Git 리포지토리에 변경 사항을 커밋합니다. 기본 Git 워크플로에서 변경 사항을 테스트하고 완료하면 스테이징 영역에 변경 사항을 추가합니다. 이를 위해 git add
명령을 사용합니다.
스테이징 영역에 변경 사항을 추가한 후 이제 변경 사항을 Git 리포지토리에 커밋합니다. git commit
명령을 사용하여 변경 사항을 커밋합니다.
각 커밋은 저장소 상태의 스냅샷과 이름, 타임스탬프 및 메시지를 기록하는 데 사용됩니다. git commit
명령을 사용하여 변경 사항을 커밋하면 해당 변경 사항이 로컬 Git 리포지토리에 커밋됩니다.
이 로컬 리포지토리는 원격 Git 리포지토리와 연결되어 있습니다. 그런 다음 로컬 Git 리포지토리의 커밋을 원격 리포지토리로 푸시합니다. 이를 위해 git push
명령을 사용합니다.
때때로 커밋을 원격 저장소로 푸시하기 전에 로컬 저장소의 현재 커밋이 더 이상 필요하지 않다고 느끼고 이를 버리고 싶을 수 있습니다.
따라서 로컬 저장소에서 커밋을 삭제하려면 git reset
명령을 사용할 수 있습니다. Git 저장소에 다음과 같은 커밋 기록이 있다고 가정합니다.
$ git log --oneline
453dcfc (HEAD -> master) minor change
bea3aac (origin/master, origin/HEAD) some change
b14f387 Other change
...
커밋 히스토리에서 453dcfc
커밋은 로컬 Git 저장소에 있지만 아직 원격 저장소에는 없습니다. 이전 커밋도 원격 저장소에 있습니다.
따라서 로컬 저장소에 있고 아직 원격 저장소로 푸시되지 않은 커밋을 삭제하려면 다음과 같이 git reset
명령을 실행할 수 있습니다.
$ git reset --soft HEAD~1
위의 git reset
명령은 현재 HEAD
를 커밋 한 번으로 재설정합니다. --soft
옵션이 있는 git reset
명령은 스테이징 영역과 작업 트리를 건드리지 않습니다.
다음과 같이 git status
에 표시된 대로 변경된 모든 파일을 Changes to commit
으로 유지합니다.
$ git status
On branch master
Your branch is up to date with 'origin/master'.
Changes to be committed:
(use "git restore --staged <file>..." to unstage)
modified: README.md
이제 커밋 기록을 다시 확인하고 453dcfc
커밋이 더 이상 존재하지 않는 것을 관찰할 수 있습니다.
$ git log --oneline
bea3aac (origin/master, origin/HEAD) some change
b14f387 Other change
...
Git에서 원격 리포지토리로 푸시되지 않은 커밋을 재설정하는 방법을 살펴보았습니다.
자세한 내용은 다음 링크를 참조하십시오.