반응형
Notice
Link
스택큐힙리스트
브랜치에서 커밋을 삭제하는 방법은 무엇인가요? 본문
반응형
브랜치 기록에서 커밋을 삭제하는 방법은 무엇인가요? git reset --hard HEAD
를 사용해야 할까요?
답변 1
주의: git reset --hard
는 작업 디렉터리 변경 사항을 삭제합니다. 이 명령을 실행하기 전에 보관하고 싶은 지역 변경 사항을 반드시 저장해야 합니다.
만약 해당 커밋에 위치해 있다면, 이 명령은 그것을 삭제할 것입니다...
git reset --hard HEAD~1
HEAD~1
은 head 이전의 커밋을 의미합니다.
또는, git log
의 출력을 확인하여 백업하려는 커밋의 커밋 ID를 찾고 다음과 같이 실행할 수 있습니다:
git reset --hard <sha1-commit-id>
이미 푸시했다면, 제거하려면 강제 푸시를 수행해야 합니다...
git push origin HEAD --force
그러나, 다른 사람들이 이미 가져갔다면, 새로운 브랜치를 시작하는 것이 좋습니다. 왜냐하면 그들이 가져오면 그것은 그들의 작업에 병합되고 다시 푸시될 것이기 때문입니다.
이미 푸시했다면, 변경 사항을 되돌릴 거울 이미지 커밋을 만들기 위해 git revert
를 사용하는 것이 더 좋을 수 있습니다. 그러나 이 두 커밋은 로그에 포함될 것입니다.
FYI: git reset --hard HEAD
는 작업 진행 중인 내용을 제거하려는 경우에 훌륭합니다. 가장 최신 커밋으로 되돌리며 작업 트리와 인덱스에서 모든 변경 사항을 지웁니다.
마지막으로, 삭제한 커밋을 찾아야 할 경우, 일반적으로 git reflog
에 있습니다. 단, 리포지토리를 가비지 컬렉션한 경우에는 해당하지 않습니다.
답변 2
더운 여름날, 저는 Git을 사용하여 프로젝트를 관리하는 동안 실수로 잘못된 커밋을 브랜치에서 삭제해야 했습니다. 이번 글에서는 브랜치에서 커밋을 삭제하는 방법과 그 과정에 대해 자세히 알아보겠습니다.커밋은 Git에서 프로젝트의 변화를 기록하는 단위입니다. 때로는 실수로 잘못된 파일이나 부정확한 변경 사항이 커밋되는 경우가 발생할 수 있습니다. 이런 경우, 커밋을 수정하거나 전체적으로 삭제하는 것이 필요합니다. 하지만 주의할 점은 이미 원격 저장소에 푸시된 경우, 커밋 삭제는 권장되지 않습니다. 이유는 원격 저장소에서 다른 개발자들이 이미 해당 커밋을 갖고 있을 수 있기 때문입니다.
먼저, 로컬 환경에서 잘못된 커밋을 삭제하는 방법에 대해 알아보겠습니다. Git 커맨드를 사용하거나 Git 그래픽 도구를 활용할 수 있습니다. 가장 일반적인 방법은 git reset 명령을 사용하는 것입니다. 이 명령은 현재 브랜치의 HEAD를 이전 커밋으로 이동시키는 역할을 합니다. 옵션에 따라 이전 커밋으로 이동하거나 단순히 최신 커밋을 삭제할 수 있습니다.
예를 들어, git reset --hard HEAD~1 명령을 실행하면 현재 브랜치에서 가장 최근의 커밋을 하나 삭제할 수 있습니다. --hard 옵션은 해당 커밋과 함께 작업 디렉토리의 변경 사항도 제거됩니다. 만약 작업 디렉토리의 변경 사항을 유지하고 싶다면 --soft 옵션을 사용하면 됩니다.
또 다른 방법은 git revert 명령을 사용하여 커밋을 취소하는 것입니다. 이 명령은 현재 브랜치에 새로운 커밋을 생성하여 이전 커밋의 변경 사항을 되돌립니다. git revert는 원격 저장소에 푸시된 커밋을 삭제하지 않기 때문에, 협업을 위해 안전한 방법입니다. 단, git reset과 달리 이전 커밋의 변경 사항은 유지됩니다.
마지막으로, 원격 저장소에 영향을 주지 않고 원하는 커밋을 삭제하는 방법은 git cherry-pick 명령을 사용하는 것입니다. 이 명령은 특정 커밋을 현재 브랜치로 가져와 적용하는 역할을 합니다. 따라서 잘못된 커밋 이후의 변경 사항을 제외하고 해당 커밋을 적용할 수 있습니다. 이후 원격 저장소에 푸시하기 전에 로컬에서 커밋을 삭제하여, 브랜치에 잘못된 커밋이 반영되지 않도록 할 수 있습니다.
잘못된 커밋을 수정하거나 삭제하는 방법을 알아보았습니다. 그러나, 원격 저장소에 푸시된 커밋을 삭제하기 전에는 주의가 필요하며, 다른 개발자들과 협업할 때는 이에 따라 적절한 방법을 선택해야 합니다. Git을 활용하여 프로젝트를 원활하게 관리하며, 실수를 할 경우 지속적인 학습과 이해를 바탕으로 복구해 나가는 것이 중요합니다.
반응형
Comments