형상관리(Git)
Last updated
Last updated
학생시절 레포트를 제출해야할때나, 상사에게 보고해야할 보고자료를 작성할때 위처럼 직접 보고자료에 대한 버전관리를 수행해본 경험이 있을 것이다.
단순 파일이나 보고서라면 상관 없겠지만, 복잡한 소프트웨어의 변경이력을 관리하기 위해서는 형상관리에 대한 개념과 형상관리를 지원하는 도구들에 대해 이해하고 다룰 줄 알아야 한다.
소프트웨어의 변경사항을 체계적으로 관리하고 통제하는 것.
변경사항이라 함은 파일의 추가, 삭제 뿐만 아니라 파일 내부의 소스코드의 수정내용 또한 포함 된다.
시간이 지남에 따라 변해가는 소프트웨어의 변경사항들을 관리하면서 소프트웨어의 형상을 체계적으로 관리하고 유지하므로 형상관리를 지원하는 도구를 "형상관리 시스템"이라고 부른다
대표적인 형상관리 도구
소스코드를 저장하고 이력을 관리하는 저장소(repository)이다.
원하는 시점에 소스코드를 저장하거나, 저장지점으로 돌아가는 기능을 제공하여 프로젝트의 버전을 관리할 수 있다.
여러 pc에 소스코드를 저장시키거나 여러 pc에 저장한 내용을 하나로 병합하는 것이 가능하다.
Git을 웹으로 이용할 수 있게 만든 원격 저장소(remote repository)이다.
여러 개발자가 하나의 원격 저장소를 이용하여 소스코드를 내려받거나, 병합하는 행위가 가능하다. 즉 프로젝트 단위로 하나의 원격저장소를 이용하여 협업이 가능한 것이다.
프로젝트를 진행하는 폴더를 의미하며, Working Directory
내부에서 소스코드 변경 후 저장 시(ctrl+s) 자동으로 git add
명령어가 실행되며, "변경사항"을 Staging Area로 전달됨.
Local Repository
에 저장된 소스코드를 현재 프로젝트에 merge
명령어를 통해 병합가능하다.
checkout
명령어를 통해 작업 Branch
변경도 가능하다.
변경된 코드가 Local Repository
에 저장되기 전에 머무르는 중간영역 이다. Local Repository
에 저장할 파일을 선택하고 commit
명령어를 통해 저장할 수 있다.
저장하기 싫다면 변경 전 코드로 돌아가면 자동으로 Staging Area에서 제외된다.
내 컴퓨터(PC)내에 존재하는 저장소이다. 소스코드의 변경/추가등의 이력을 기록한다.
Local Repository
에 저장된 내용은 push
명령어를 통해 Remote Repository
로 밀어 넣을수 있고 fetch 명령어를 통해Remote Repository
에서 당겨 올 수 도 있다.
fetch
와 merge
를 합친 pull
이라는 명령어도 존재한다. 단 pull
을 통한 자동병합보다는 fetch
후 수동병합을 권장한다.
Git Hub에 존재하는 저장소이다.
Git에는 Branch를 통해 하나의 저장소 내에 여러 버전을 만들어 작업할 수 있다.
협업시 master
브랜치를 여러개로 나누어 각 개발자는 독립적인 작업을 진행한다.
각 branch로 가져간 코드는 원본에 영향을 미치지 않으므로 자유로운 작업이 가능하며, branch의 변경된 내용만 master
에병합 시키는 PR(Pull Request)를 보낼 수 있다.
프로젝트에 참여한 개발자들은 PR이 들어온 경우 요청 내용을 다같이 검토(Review)한다
문제가 없다면 PR(Pull Request)승인 후 변경 내용을 master
에 병합한다