git으로 잘못 푸시했을 때 대처법 4가지

안녕하세요, 이번에는 git으로 잘못 푸시 했을 때 대처법에 대해 알아보겠습니다. git은 개발자들에게 필수적인 도구이지만, 때때로 실수로 잘못된 브랜치나 리모트에 push를 하게 되는 경우가 있습니다. 이런 경우에는 어떻게 해야 할까요? 이 글에서는 git으로 잘못 푸시했을 때의 대처법을 알려드리겠습니다.

git으로 잘못 푸시한 커밋을 되돌리기
잘못 푸시했을 때 가장 먼저 해야 할 일은 잘못 푸시한 커밋을 되돌리는 것입니다. 이를 위해서는 git revert 명령어를 사용할 수 있습니다. git revert는 특정 커밋을 취소하는 새로운 커밋을 생성하는 명령어입니다. 예를 들어, 마지막으로 푸시한 커밋을 취소하고 싶다면 다음과 같이 입력할 수 있습니다.
1 2 |
git revert HEAD |
이렇게 하면 HEAD 커밋을 취소하는 새로운 커밋이 생성됩니다. 이 커밋을 다시 푸시하면 잘못 푸시한 커밋을 되돌릴 수 있습니다.
1 2 |
git push origin main |
만약 여러 개의 커밋을 취소하고 싶다면, git revert에 범위를 지정할 수 있습니다. 예를 들어, 마지막 3개의 커밋을 취소하고 싶다면 다음과 같이 입력할 수 있습니다.
1 2 |
git revert HEAD~2..HEAD |
이렇게 하면 HEAD부터 HEAD~2까지의 커밋을 취소하는 새로운 커밋들이 생성됩니다. 이 커밋들을 다시 푸시하면 잘못 푸시한 커밋들을 되돌릴 수 있습니다.
1 2 |
git push origin main |
git revert는 잘못 푸시한 커밋을 취소하는 가장 안전한 방법이지만 이 방법은 새로운 커밋을 생성하기 때문에 커밋 히스토리가 복잡해질 수 있습니다. 또한, 다른 사람들과 협업하는 경우에는 revert한 커밋이 충돌을 일으킬 수 있습니다. 따라서, git revert를 사용하기 전에는 다른 사람들과 협의하는 것이 좋습니다.
git으로 잘못 푸시한 브랜치를 삭제하기
또 다른 대처법은 잘못 push 한 브랜치를 삭제하는 것입니다. 이를 위해서는 git push –delete 명령어를 사용할 수 있습니다. git push –delete는 특정 브랜치를 리모트에서 삭제하는 명령어입니다. 예를 들어, dev 브랜치를 잘못 push 했다면 다음과 같이 입력할 수 있습니다.
1 2 |
git push --delete origin dev |
이렇게 하면 dev 브랜치가 리모트에서 삭제됩니다. 이후에 다시 올바른 브랜치를 push 하면 됩니다.
1 2 |
git push origin main |
git push –delete는 잘못 푸시한 브랜치를 간단하게 삭제할 수 있는 방법이지만 이 방법은 리모트에서 브랜치를 완전히 삭제하기 때문에 주의해야 합니다. 다른 사람들과 협업하는 경우에는 삭제한 브랜치가 필요한 경우가 있을 수 있으니 git push –delete를 사용하기 전에는 다른 사람들과 협의하는 것이 좋습니다.
git으로 잘못 푸시한 리모트를 변경하기
또 다른 대처법은 잘못 푸시한 리모트를 변경하는 것입니다. 이를 위해서는 git remote 명령어를 사용할 수 있습니다. git remote는 리모트 저장소의 이름이나 주소를 추가, 삭제, 변경하는 명령어입니다. 예를 들어, origin 리모트를 잘못 push 했다면 다음과 같이 입력할 수 있습니다.
1 2 |
git remote set-url origin https://github.com/new-repo.git |
이렇게 하면 origin 리모트의 주소가 https://github.com/new-repo.git로 변경됩니다. 이후에 다시 올바른 리모트를 푸시하면 됩니다.
1 2 |
git push origin main |
git remote는 잘못 푸시한 리모트를 쉽게 변경할 수 있는 방법이지만 이 방법은 리모트의 주소를 변경하기 때문에 주의해야 합니다. 역시 다른 사람들과 협업하는 경우에는 변경한 리모트가 영향을 미칠 수 있으니 협업중이라면 다른 사람들과 협의하는 것이 좋습니다.
git으로 잘못 푸시한 파일을 제거하기
또 다른 대처법으로 잘못 푸시한 파일을 제거하는 것입니다. 이를 위해서는 git rm –cached 명령어를 사용할 수 있습니다. git rm –cached는 특정 파일을 스테이징 영역에서 제거하는 명령어입니다. 예를 들어, password.txt 파일을 잘못 푸시했다면 다음과 같이 입력할 수 있습니다.
1 2 |
git rm --cached password.txt |
이렇게 하면 password.txt 파일이 스테이징 영역에서 제거됩니다. 이후에 .gitignore 파일에 password.txt를 추가하고 다시 커밋하면 됩니다.
1 2 3 4 |
echo "password.txt" >> .gitignore git commit -m "Remove password.txt" git push origin main |
git rm –cached는 잘못 푸시한 파일을 빠르게 제거할 수 있는 방법이지만 이 방법은 리모트에 이미 푸시한 파일을 완전히 삭제하지는 못합니다. 위와 마찬가지로 협업중이라면 다른 사람들과 협의하는 것이 좋습니다.
마무리
이상으로 git으로 잘못 푸시했을 때의 대처법에 대해 알아보았습니다. git은 매우 유용한 도구이지만 실수로 잘못된 push를 하게 되는 경우가 있습니다. 저도 가끔 혼자 개발할때 종종 실수를 하곤 하는데 협업중이라면 신중하게 커밋하고 혹시 실수를 하게 되더라도 패닉에 빠지지 말고 위에서 설명한 방법 중 적절한 방법을 사용하여 문제를 해결할 수 있습니다.
git revert, git push –delete, git remote, git rm –cached 등의 명령어를 잘 활용하면 잘못 푸시했을 때의 대처법을 쉽게 적용할 수 있지만 이러한 명령어들은 리모트 저장소나 커밋 히스토리에 영향을 미칠 수 있으므로, 사용하기 전에 신중하게 사용해야 합니다.
다른 유용한 코딩 정보를 확인하고 싶으시면 블로그 메인도 방문해주시면 감사하겠습니다.