삐약삐약
안녕하세요, 일루넥스 개발팀에 새로 합류한 병아리
개발자 윤나영입니다!
입사 후 신입 개발자의 팀 적응을 위한 신규 인력 개발 프로젝트를 진행하고 있습니다 🙂
프로젝트를 하다 보면 매일 접하게 되는 툴이 있는데요, 바로 Git과 Github입니다.
매일 출근과 동시에 소스 코드를 pull을 받아 업데이트 내용을 확인하고,
퇴근 전후에 그 날 진행한 소스 코드를 commit하고 push합니다.
전 세계 개발자의 필수 시스템인 ‘Git’ 과 Git Data를 저장하고 공유 해주는 ‘Github’ 를 사용하며
마주할 수 있는 이슈들과 그 해결 방안에 대해 포스팅 하겠습니다.
Git은 리눅스의 창시자인 리누스 토르발스가 개발한 분산형 버전 관리 시스템입니다. 버전 관리란 변경 사항을 체계적으로 관리하는 것을 의미합니다.
소스 코드를 효율적으로 관리하기 위해 개발되었으며, 원래는 리눅스 소스코드를 관리할 목적으로 개발되었습니다.
Git을 사용하면 소스 코드의 변경 이력을 쉽게 파악할 수 있고 더 나아가 일관적인 코드를 설계할 수 있습니다.
Git은 로컬 저장소와 원격 저장소를 제공합니다.
로컬 저장소(Local Repository)는 개발자의 PC에 위치한 개인 전용 저장소이며,
원격 저장소(Remote Repository)는 인터넷이나 네트워크에 위치한 공유 전용 저장소입니다.
팀원들과 협업할 시엔 원격 저장소를 관리하면서 소스 코드를 push하고 pull 하게 됩니다.
Git은 리눅스를 기반으로 하고 있기 때문에 macOS에서는 Terminal을, Windows에서는 PowerShell로 명령어를 입력합니다.
보다 편리한 관리와 직관적인 UI를 제공하는 GUI(Graphical User Interface)가 존재하며, 가장 유명한 툴은 Sourcetree 입니다.
Github는 Git을 호스팅 해주는 웹 서비스이며, Git 원격 저장소를 제공합니다.
Git의 원격 저장소에 Github 원격 저장소를 연결한 후 소스 코드를 push하면 Github에서 소스 코드를 관리할 수 있습니다.
Github는 원격 저장소와 더불어 편리한 UI와 다양한 기능을 제공하며, 무한한 소스들이 있는 ‘정보의 바다’이기도 합니다.
현재는 마이크로소프트가 인수하였습니다.
버전 관리를 진행하다 보면 각종 이슈와 마주하게 됩니다.
그 중에서도 제가 최근에 자주 경험 했던 이슈 3가지와 개선 방안에 대해 알아보겠습니다.
불필요한 파일과 함께 commit 작업을 했거나, 파일을 빠트리고 commit을 진행한 경우 등에 사용할 수 있습니다.
이 때 reset
이나 revert
명령어를 사용할 수 있습니다.
reset
는 특정 commit으로 되돌아갈 수 있으나 되돌린 버전 이후의 버전들은 히스토리에서 삭제됩니다.revert
는 reset과 동일한 기능을 하나 되돌린 버전 이후의 버전이 히스토리에 남습니다.저는 이후 버전의 히스토리를 남기지 않기 위해 reset 명령어를 사용하였습니다.
reset
의 옵션은 세 가지가 있습니다.
soft
: 모든 로컬 변경 사항을 유지합니다.mixed
: 기본 옵션으로 작업 상태는 그대로 두지만 인덱스는 리셋합니다.hard
: 모든 작업 상태 내 변경 사항을 버립니다.$ git reset --option HEAD^
지금까지 진행했던 작업이 잘못되어 원복해야 하는 경우 등에 사용할 수 있습니다(상상만 해도 끔찍합니다ㅠㅠ).
$ git reflog
00aa0aa HEAD@{0}: commit: 원복해야 하는 커밋1
10aa0aa HEAD@{1}: commit: 원복해야 하는 커밋2
20aa0aa HEAD@{2}: commit: 원복 이전 커밋
$ git reset --option 20aa0aa
commit 메세지에 오타가 있거나 메세지를 잘못 작성하였을 경우 등에 사용할 수 있습니다.
여기서는 —-amend
옵션을 사용할 수 있습니다.
$ git commit --amend -m "수정 커밋 내용"
이번 포스팅에서는 Git과 Github의 개념과 Git을 사용하며 마주할 수 있는 이슈 및 해결 방안에 대해 알아보았습니다.
간단한 명령어지만 의외로 많이 쓰이며 알고 있으면 보다 자유롭고 효율적인 버전 관리를 진행할 수 있습니다.
여기까지 읽어주셔서 감사합니다. 개발자 윤나영이었습니다.