오픈소스 SW 기초 프로젝트 GIthub에 개발 중인 소스코드를 실수로 main 브랜치에 push를 했다.
main 브랜치는 팀 모두가 공유하고, merge를 완료한 후 올리는 브랜치이기에,
로컬로 개발한 사항을 곧바로 main에 push하지 않고 개인 브랜치에 push 후 main에 Pull Repuest를 날려서
main에 코드를 merge한다.
실수로 main에 push한 사항을 복구를 완료했다.
이번 포스팅은 main에 실수로 push한 사항을 복구하는 방법에 대해서 포스팅이다.
# 아래 블로그를 참조해서 복구 완료
Commit Log 찾기
Commit 히스토리 확인
$ git log
commit한 시간을 살펴보면서 복구하고자 하는 Commit의 해시값 찾기
Commit 해시값으로 이동
$ git checkout 60c8e4007d8d83a92dc801d672c8f60ff456ffc9
그러면, 복구하고자하는 코드 내역이 로컬 디렉토리에 올라왔을 것이다.
이에 대해서 일치한지 확인한다.
commit한 코드 내역확인 후 main 브랜치로 전환
# 기존의 main 브랜치 삭제
$ git branch -D main
# main 브랜치를 새롭게 생성하면서, 복구하고자하는 코드 내역 main으로 옮기기
$ git switch -c main
# main 브랜치에 복구 코드 내역인지 확인하고, Github main 브랜치에 Push
-f 옵션인자로 강제적으로 mian 브랜치를 commit 계층에 상관없이 코드 Push
$ git push -f origin main
추가 - 히스토리 기능을 위해선 Commit
Git의 히스토리 복구 기능은 Commit 로그를 토대로 소스코드 내역들이 보여지게 된다.
따라서, Git의 히스토리 기능을 사용하기 위해선, Commit을 해야된다.
# Git을 이용한 프로젝트 개발 시 유의사항 - Git 히스토리 관리
장기 프로젝트 개발을 수행할 때는 Feature 하나를 개발완료하게 된다면,
commit을 수행해서
프로젝트 소스코드를 관리하는 것이 이상적이다.
정리해서, Feature 개발이 완료 후 Commit을 해서 Git의 히스토리를 만들어준다.
원하는 사항을 코드를 복구할 수 있고, 소스코드 관리에 있어서 체계적으로 관리를 수행할 수 있다.
복구완료 & 느낀점
이번에 처음으로 Git의 히스토리 기능을 사용해서 Github에 실수로 push한 사항에 대해서 복구를 완료했다.
Git이 히스토리 기능을 지원한다는 사실은 알고 있었지만, 실제로 사용해보진 않았었다.
이번 경험을 계기로 Git의 히스토리 기능을 사용해 GIt의 과거 코드를 가져와서 복구를 진행해보았다.
공동 개발로 Github로 소스 코드를 관리하고 있는데, 내가 실수로 main에 코드를 push해서 당황했었다.
하지만, 결론은 대처할 수 있었고, 해결책이 있었다.
요즘들어, 개발 경험이 쌓이면서, 개발하면서 실수하거나 에러가 발생했을 때 차분하게 대처하는 능력이 생긴 것 같다.
그러면서, 개발하면서 생긴 이슈사항을 빠르게 파악하고 빠르게 해결해내는 내가 되고 있다는 걸 점점 더 많이 느끼고 있다.
이번 경험도 개발 경험에 새로운 시야를 갖게 해준 뜻깊은 경험이 되었다.
요즘들어, PM으로써 프로젝트를 관리하고 이끌어나가고 있다.
여러 사람들에게 프로젝트를 설명하고, 관리하고 이끌기에, 많이 힘들지만 그만큼 많이 배우고 있다.
종강을 하고, PM으로써 학기 중 프로젝트를 임했던 사항에 대해서 정리를 하면서 앞으로 더 성장하는 PM을 맡을 수 있는 내 자신이 되기위한 방향들에 대해서 생각해볼 것이다.
지금 현재 시점으로 PM에 대한 가치관을 정리하면, PM으로써 맡은 임무인 프로젝트 완성을 하지 못할 것 같아서 약간 참고,
우선 주어진 바인 PM으로써 책임을 다해 프로젝트를 완성시켜볼 것이다.
"현재의 순간은 힘들지만 해내고 나면, 엄청난 성장을 이뤄낼 것 같다. 조금만 더 힘내보자."
'CS 대학강의' 카테고리의 다른 글
[CS 1-2 | 프로그램 설계 방법론] Github에서 충돌났을 때 해결법 (0) | 2022.12.09 |
---|---|
[CS 1-2 | 오픈소스 SW 기초] Docker 이미지 & 컨테이너 (0) | 2022.12.08 |
[CS 1-2 | 오픈소스 SW 기초] JAVA 프로젝트를 위한 개발 리소스 정리 (0) | 2022.12.06 |
[CS 1-2 | 아카데믹 글쓰기] 글쓰기의 마무리, 퇴고쓰는 방법 (0) | 2022.12.05 |
[CS 1-2 | 프로그램 설계 방법론] VS Code에서 Java 개발환경 셋팅하는 법 (0) | 2022.12.05 |