티스토리 뷰

728x90

프로젝트를 시작하기 이전에 이미 형상관리를 사용하도록 체계화되어 있다면 별 문제가 아닐 수 있습니다. 프로젝트 팀장이나 팀원중 한명이 프로젝트의 코드 저장소를 생성하고 이메일등으로 그 주소만 통보하면 각 팀원은 해당 주소의 저장소를 로컬 저장소에 복제(Clone)하여 작업을 바로 시작하면 되기 때문입니다. 그렇지만, 형상 관리 시스템 없이 진행했던 프로젝트를 형상 관리 체계로 가져오거나 대량의 프로젝트의 초기 파일을 형상 관리에 등록하는 경우에는 이미 존재하는 저장소에 접근하는 것과는 다른 방식을 사용합니다.

깃의 경우 팀원들이 함께 사용할 원격저장소나 깃허브같은 서버의 유무와 관계없이 로컬 저장소를 만드는 것으로 시작할 수 있습니다. 본 포스팅은 WCopyfind라는 오픈 소스 프로젝트를 한글화하고 수정하기 위해서 코드를 압축 파일로 다운로드 받아 로컬에서 깃 형상관리를 시작하는 것을 가정하겠습니다.


예제 프로젝트는 코드 배포에 서브버전이나 깃을 사용하지 않고 소스코드를 압축 파일로 배포하고 있으므로 다운로드 받은 파일을 위의 그림과 같이 적절한 곳에 압축해제했습니다. 위의 그림과 같이 프로젝트의 루트 디렉토리로 이동한 다음 아래의 그림과 같이 마우스 우버튼으로 팝업 메뉴를 띄워 "Git Init Here"를 선택합니다.



팝업 메뉴에서 "Git Init Here"를 선택하면 별다른 창이 나오지는 않습니다. 대신에 아래의 그림과 같이 로컬 깃 저장소인 ".git"가 나타나고 TortoiseGit을 설치한 경우에는 현재 폴더를 형상관리대상으로 인식하여서 파일 및 폴더의 아이콘을 변경하기 시작합니다.


형상 관리 대상 폴더이므로 팝업 메뉴 또한 위의 그림처럼 달라집니다. 이 상태에서 위의 그림처럼 프로젝트 루트 폴더의 팝업메뉴에서 "Git Add all files now"를 선택하거나 "git add ." 명령으로 수정후보로 등록합니다(깃(Git) 시스템 구조 이해 참조) 아래 그림은 수정후보 등록 이후의 탐색기 화면으로 TortoiseGit이 프로젝트 파일들을 수정후보로 인식하고 있음을 확인할 수 있습니다.


끝으로 "수정후보"로 등록한 프로젝트를 커밋(Commit)하면 로컬에서의 형상 관리 과정은 마무리됩니다. 커밋은 팝업메뉴의 "Git Commit Tool"로 커밋해도 되지만 필자의 경우에는 TortoiseGit 팝업 메뉴 그룹에 있는 "Git Commit -> "master"..." 메뉴를 통해서 아래와 같이 커밋 메시지를 입력하여 커밋했습니다.


커밋메시지는 저장소에 등록하는 코드들의 변경 사유와 핵심내용들이 포함되며 이슈트래커를 사용하는 경우 해당 이슈번호등도 포함하는 매우 중요하고 유용한 정보이므로 꼼꼼하게 정리해서 입력합니다. 


TortoiseGit로 커밋하면 위의 그림과 같이 결과 화면에 원격 저장소에 대한 "Push" 명령으로 바로 연동할 수 있도록 하지만 "Push"하지 않고 [Close]로 창을 닫습니다. 아래의 그림은 커밋 이후의 프로젝트 폴더로 형상관리대상으로 "Unmodified" 상태로 전환되었음을 확인할 수 있습니다.



로컬에 준비된 저장소를 원격저장소에 등록할 경우에는 GUI 인터페이스로 해도 되지만 명확한 과정을 위해서 팝업 메뉴에서 "Git Bash"로 콘솔모드에서 작업하겠습니다. 과정은 간단합니다. 저장소를 생성한 원격저장소의 주소를 "git remote add 이름 주소"의 형식으로 등록하고 "git push"로 원격저장소에 저장하면 됩니다.



위의 그림을 보면 원격저장소의 주소로 SSH주소나 웹주소가 아닌 파일 경로를 지정하고 있는데 파일 경로의 경우에도 로컬 저장소가 아닌 원격 저장소이기 때문에 다른 원격 저장소와 같은 방식으로 처리됩니다. 통상 기존 저장소를 복제(Clone)해서 작업을 하게되면 원격저장소의 주소가 origin이란 이름으로 자동적으로 등록됩니다. 그런데, 저장소를 복제해서 시작한 것이 아니라 로컬저장소의 내용을 원격 저장소에 넣으려고 하므로 "git remote add"로 주소를 추가해준 것입니다. 주소를 추가한 다음에는 푸시(PUSH) 명령으로 원격저장소에 내용을 저장하면 됩니다. 단, 만약 파일시스템을 주소로 사용하는 경우에는 원격저장소를 만들때 "git init --bare" 옵션으로 저장소를 생성하거나 아래의 그림과 같이 "git config receive.denyCurrentBranch ignore" 명령을 주어야 정상적으로 푸시를 받을 수 있습니다. 


원격저장소와 관계없이 매일 매일 코딩하고 수정했던 내용을 커밋해서 개발 과정을 기록하는 습관을 가지는 것이 좋습니다. 팀웍을 하는 경우 주기적으로 원격저장소의 내용을 가져오고 저장소에 푸시하는 습관도 필요합니다.

728x90
댓글
최근에 올라온 글
최근에 달린 댓글
«   2024/04   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
글 보관함