커밋을 되돌리다

kimjaewon·2023년 10월 11일
0

실수 모음집

목록 보기
1/1

회사 업무중 큰 실수는 아니지만 약간의 귀찮을 수 있는 실수를 해버렸따
간단하게 설명하자면 특정 알고리즘을 짜면서 A부분에 작업해야 했을 것을 C쪽에다가 하고
commit 까지 해버린것

어떤 방법으로 직전 커밋을 되돌릴까 생각하며 찾아보았다


git reset과 git revert 방법

reset 사용하기

1. 하드 리셋 (경고!: 작업중인 변경사항 모두 삭제됨)

git reset --hard HEAD~1

마지막 커밋이 삭제된다

2. 소프트 리셋 (작업중인 변경사항은 그대로 유지)

git reset --soft HEAD~1

마지막 커밋은 취소하고 변경사항은 스테이징 영역에 그대로 둔다

3. revert 사용

git revert HEAD

새로운 커밋을 생성하여 마지막 커밋의 변경사항을 되돌린다
이 방법은 히스토리를 수정하지 않고 변경사항을 되돌리기 때문에
협업할 때 권장되는 방법이다

어떤 상황에 따라 다르지만
보통 혼자 작업하고 있어 커밋 히스토리를 깔끔하게 유지하고자 할때는 'reset'
다른 협업자와 함께 히스토리 유지가 필요할 때는 'revert' 를 권장한다


또 다른 방법

현재 잘못된 커밋에 tag를 달고 checkout으로 돌아가기

git tag 태그명

잘못된 커밋을 기억하기 위해 tag를 달아 나중에 잘못된 커밋을 참조해야 할때 'backup_tag' 태그를 사용해 참조가 가능하다

git checkout HEAD~1

원하는 커밋으로 체크아웃해 돌아간다
여기서 'HEAD~1'은 내가 원했던 직전 커밋이다
그러니까 뒤에 ~5 를 붙이면 5번째 전 ~10을 하면 10번째 전 커밋으로 돌아간다

알아야 할 점

위 방법으로 체크아웃 하면 원래의 브랜치 상에서 변경 사항이나
새로운 작업은 사라지지 않지만 체크아웃된 상태에서는
'그 커밋 시점의 코드 상태로 작업을 진행하게된다'

여기서 중요한 점: 특정 커밋으로 체크아웃해 새로운 커밋을 만들면, 이는
"분기된" 히스토리를 시작한다고 하며 'detached HEAD' 상태라고도 불린다

이렇게 분기된 히스토리에서 작업을 계속하려면 새로운 브랜치를 생성해 작업하는 것이 안전하고 원래의 브랜치 상에서의 작업은 그대로 보존되면서
새로운 브랜치에서 원하는 커밋부터의 변경사항을 계속 추가할 수 있다


내가 해결한 방법 (현재 나의 시점)

  1. 이전 커밋(특정)으로 되돌아가기

    git checkout [특정 커밋 tag]

2.되돌아왔기 때문에 현재(detached HEAD) 상태 = 재작업
3.작업 후 커밋하고 브랜치 새로 하나 생성

git add .
git commit -m "커밋 메세지"
git branch [새 브렌치 이름]
git checkout dev (다시 원래 브랜치 이동)
git merge (새 브랜치와 병합)
git tag (새로 커밋한 부분에 히스토리를 남기기 위해 태그 설정)
git push origin [tag명]
git push origin [새 브랜치 이름]

이렇게 커밋을 되돌아가 작업하고 새 브랜치를 만들어 다시 병합하면서 문제를 해결했다

profile
올라가자

0개의 댓글