형상관리

Git 프로젝트 생성하기

최성헌 2017. 6. 20. 15:11

프로젝트를 시작하는 단계에서 구축을 하게 될경우 먼저 Git을 현재 구축된 프로젝트에 연동을 해 놓아야 합니다.

보통 구축을 제외하고 개발하시는 분들은 연동 URL을 전달 받아서 Checkout만 받으시면 되지만 본 문서에서는 구축하는 단계부터 설명을 하도록 하겠습니다.

IDE(개발툴)로는 가장 많이 사용하고 있는 이클립스를 기준으로 설명을 하며, SDK를 포함해 설치 과정은 제외합니다. 

이클립스는 Eclipse IDE For java EE Developers의 Windows 64 Bit용으로 설치 하였고 버전은 Luna Service release 1 (4.4.1) 입니다.


Step 1. 예제용 프로젝트 생성

이클립스에서 예제로 사용할 프로젝트를 하나 신규로 만듭니다. 일반적으로 Maven이나 Web 기반의 프로젝트를 생성하나 Git을 테스트하기 위함인지라 일반 JAVA프로젝트를 생성하기로 하겠습니다.

먼저 이클립스 초기 화면의 Project Explorer에서 오른쪽 마우스 버튼 클릭 후 new => project를 선택합니다.

새로 열린 New Project 팝업 창에서 Java Project를 선택하고 Next를 누릅니다.

Project name에 원하시는 프로젝트명을 입력 후 Finish를 클릭 합니다. 저는 "example-git"이라고 입력 하였습니다. JavsSE 버전은 테스트 용이라 1.6을 선택했지만 1.7을 선택하시길 권장 드립니다.

이클립스를 Java EE를 사용하기 때문에 일반 Java Project 생성시 Associated Perspective를 일반 Java용으로 열거냐는 질문의 메세지 팝업이 나오는데 그냥 No로 선택하시면 됩니다.

아래 팝업창이 안나오더라도 크게 신경쓰지 않으셔도 됩니다.


Step 2. 예제용 소스코드 작성

프로젝트를 만들었으면 이제 버전을 관리할 소스코드를 하나 작성해 보도록 하겠습니다.

기본 패키지는 unus.example로 사용할 것이구요, 실행 메소드인 Main을 만들기 위해 StartMain.java 파일을 기본 패키지에 만들도록 하겠습니다.

소스를 만들고 실행한 결과 다음과 같이 잘 작동하고 있습니다. 간단히 Console창에 "Hello~ UNUS!!!"를 출력하는 프로그램입니다.


Step 3. Local Repository 생성

자! 이제 만들어진 프로젝트 폴더를 Local Repository로 설정을 해보도록 하겠습니다.

예제용 프로젝트는 제 PC의 d:/unus/workspace/example-git 이라는 경로에 저장되어 있습니다. 그렇다면 해당 경로를 Git Repository로 지정하도록 하겠습니다.

이클립스 오른쪽 상단에 동그라미 부분의 Git이라는 버튼을 클릭해 주세요. 만약 Git이라는 버튼이 안보이면 네모 부분을 클릭하셔서 Git을 추가하시면 됩니다.

Git Repositories라는 창에서 아래 화면처럼 현재 설정되어있는 Repository가 없기 때문에 아무런 경로 정보가 없으며 Repository를 추가하라는 가이드 메세지만 표시되고 있습니다.

가이드 메세지의 Create a new local Git repository를 눌러서 진행하도록 합니다.

Create a new local Git repository를 누려면 팝업창이 하나 뜨고 경로를 하나 선택하도록 되어 있습니다.

그리고 경로 아래에 "Create as bare repository"라는 문구가 있는데요, 이건 Remote Repository용으로 만들려는 기능이니 체크를 하시면 안됩니다.

경로는 위에 언급한 예제용 프로젝트 경로를 지정하도록 하겠습니다. 경로를 지정하고 Finish를 누릅니다.

여기까지 이상없이 진행 하셨다면 local 에서 형상관리를 할 수 있는 환경 구축이 완료 되었습니다.

하지만 Local에만 Repository가 있기 때문에 다른 사람들과 소스 공유가 아직 안되고 있죠. 그래서 중앙 Repository를 하나 만들어서 Push한 후 다른 사람이 Checkout 받을 수 있도록 해야 합니다.

중앙 Repository를 만들기 전에 우선 Git을 통해 관리할 파일들 중 무시할 파일들을 설정해야 합니다.

설정을 안해도 되지만 자신만 사용하는 환경파일이라던지, 특히 이클립스의 .classpath나 .project파일, 그리고 .settings 폴더는 제외 시키는것이 좋습니다.

아래 화면은 Local Git Repository를 생성 한 후 구성된 예제 소스들입니다. Working Directory에서 .gitignore 파일을 열어서 편집을 하도록 합니다. (예제에서는 src 폴더를 제외하곤 모두 ignore 설정을 하였습니다.)

.git은 넣지 않으셔도 자동으로 무시되지만 명시적으료 표현하기 위해 .gitignore파일에 설정을 해두었습니다.

.gitignore 설정이 끝났으면 예제로 작업한 소스를 commit하도록 합니다. 화면 오른쪽 상단에서 Java EE를 클릭하며 Project Explorer로 돌아갑니다.

그리곤 Project명에 마우스 오른쪽 클릭 후 team => commit을 선택 합니다.

그러면 Commit Changes 팝업 창이 열리는데요. 내용을 작성해 주시고 하단에 commit할 파일을 선택하고 Commit 버튼을 누릅니다.


Step 4. Remote Repository 생성

Local Repository가 만들어 졌다면 이제 중앙에서 관리를 할 저장소인 Remote Repository를 생성 해보도록 하겠습니다. 

테스트에 이용할 Remote 장비는 제 로컬 PC의 Virtual Machine Tool을 이용해서 Linux CentOS에 설치를 할 것이며, Linux에서 Remote Repository로 사용될 저장소 경로는 아래와 같습니다.

/opt/git/repository/example.git

Directory이긴 하지만 Git용 Directory임을 표시하기 위해 이름 뒤에 .git을 붙여 주었습니다.

Repository로 이용할 Directory도 생성을 했으니 이제 Git용 Remote Repository를 생성해 보도록 하겠습니다.

생성 방법은 간단하게 Repository로 이용할 Directory로 이동 후 아래 명령어를 실행하면 됩니다.

$ git init --bare

실행을 하시면 해당 Directory에 Git용으로 파일 및 디렉토리가 생성된 것을 확인 하실 수 있습니다.


Step 5. Local Repository에서 Remote Repository로 Push

Local Repository와 Remote Repository가 모두 만들어 졌으니 예제로 만든 소스를 Git 중앙 서버로 이용될 Remote Repository로 전송하도록 하겠습니다.

Local에서 Remote로 데이터를 전송하는걸 Push한다 라고 표현합니다. (그래서 명령어도 push)

Push를 하기 위해서는 먼저 Local Repository에 설정되어 있는 Git 정보에 Remote Repository 정보를 등록 해야 합니다. 현재는 아무것도 등록을 안햇으니 아무것도 안나오겠죠!

확인차 Local Repository에서 Remote 설정이 되어 있는지 확인해 보도록 하겠습니다. 확인 방법은 윈도우용 Git을 설치하면 같이 설치가 되는 Git Bash라는 Console 프로그램입니다.

먼저 Local Repository로 이동을 한 후 Remote 설정 정보를 조회를 하는 화면입니다. Remote 설정 정보는 아래와 같습니다.

$ git remote -v

현재는 설정한 정보가 아무것도 없기 때문에 목록에 아무것도 나오고 있지 않습니다.

이제 실제 Remote Repository 를 등록해 보기로 하겠습니다. 제 가상 장비의 IP는 192.168.159.131이며 따로 계정을 만들어 논게 없이 root계정을 이용하고 있습니다.

그리고 위에서도 언급했듯이 Remote 장비의 Git 경로는 /opt/git/repository/example.git 입니다. 이런 상태에서 Remote Repository를 등록하기 위한 명령어는 다음과 같습니다.

(Git는 SSH Protocol을 이용해서 데이터 전송을 하기 때문에 Git용 계정을 따로 관리하지 않습니다.)

$ git remote add vmLinux root@192.168.159.131:/opt/git/repository/example.git

위 명령어에서 'vmLinux'는 나중에 Push에서 이용될 Remote 이름이므로 원하시는대로 지정하시면 됩니다.

아까와는 달리 두개의 목록이 보여지는걸 확인 할 수 있습니다. (fetch는 내려받는다는 의미이고 push는 전송한다는 의미로 일반적인 Remote 서버는 두가지가 쌍으로 되어 있는게 정상입니다.)

Remote Repository를 등록했으니 이제 Local Repository에 있는 데이터를 전송해 보도록 하겠습니다. 전송하기 위한 명령어는 push를 이용합니다.

그런데 해당 명령어의 인자로 branch명이 들어가게 되는데 지금껏 Local Repository에서 따로 branch를 만들지 않았습니다. 

이번과 같이 별도의 branch를 만들지 않아도 최초로 Repository를 만들게 되면 master branch가 자동으로 만들어 지고 현재 branch로 설정이 됩니다. 예제에서는 master branch를 Remote Repository로 전송하도록 하겠습니다.

$ git push vmLinux master

현재 Local Repository에는 처음 예제 소스를 만들고 commit 했던 "First commit.."라는 데이터만 들어 있는 상태인데요, push를 하고 난 후 Remote Repository에서 정상으로 데이터 전송이 이루어 졌는지 확인해 보겠습니다.

$ git log

화면에서 보시는 바와 같이 Remote Repository에서도 Local과 동일한 데이터가 있는걸 확인 할 수 있습니다.

 

여기까지 완료가 되었다면 이제 기본적으로 Git을 통해 프로젝트 소스를 형상관리를 할 수 있는 기본적인 토대는 끝난 상태입니다.

다음번에는 실제 구현작업을 할 개발자들이 소스를 Checkout하고 Commit 하는 과정을 알아보도록 하겠습니다.