tadakichi와 pinawa는 공동 프로젝트를 진행하기 위해 이클립스 EGIT을 사용하기로 한다.

먼저 tadakichi가 코딩을 시작해서 Github에 올리기로 한다.




깃허브에 올릴 프로젝트에 오른클릭 하고 team->share project로 가서 git을 선택한다.



git_here라는 로컬 레포지토리가 만들어졌다. user guide 문서를 보면 repository를 workspace 안에 만들지 말라고 조언하고 있으니 참고하도록 하자. Git Repositories로 가서 git_here 내부를 보면 github에 올리려하는 프로젝트를 볼 수 있다.


package Explore를 보면 올리려는 프로젝트에 ?표가 붙어 있다. 뭔가 해야만 할 것 같다는 생각이 들지 않는가? 먼저 프로젝트에 오른 클릭을 하고 team->add to index를 클릭하자. 폴더에는 *표시가, 파일에는 +표시가 붙었다는 것을 볼 수 있다.

다시 오른클릭 team->commit으로 하면 화면이 뜬다. 깜빡하고 캡쳐를 안해서 그렇지, *와 +가 붙은 모든 폴더와 파일이 아래 Files에 들어와있는 것을 확인하라.





message에 적당히 commit에 대해 설명해주고 커밋을 누르면, 프로젝트의 폴더와 파일에 저장소(라기 보다는 손톱 같은) 그림이 생긴다. local repository의 master branch에 커밋이 되었다는 뜻이다(모르는 용어는 구글링해보시길. 나도 잘 몰라요).



이제 프로젝트를 Github에 올리기 위해 Github 사이트로 가서 레포지토리를 하나 만들자. 이름은 똑같이 git_here로 했다.



이제 레포지토리에 저장된 프로젝트를 Github사이트로 올려 보기로 하겠다(이를 push라고 함). 프로젝트 -> team -> remote -> push를 클릭하면 다음과 같은 화면이 뜬다. 다음 처럼 칸을 채워 주도록 하자. URI에는 방금 등록했던 github의 레포지토리 주소를 넣어주면 되고, username과 패스워드를 넣어 주고 다음을 누른다.



다음 화면에서는 칸을 다음과 같이 채워주도록 한다. 대략 로컬 레포지토리의 master 브랜치의 소스를 github의 마스터 브랜치로 옮긴다고 이해하면 된다. add spec을 눌러주면 specification for push에 push를 위한 설정이 추가된다. next를 누른다.



다음과 같이 나오면 거의 다 된 셈이다. 메세지에 더 추가하고 싶은 말이 있으면 추가하도록 하고, finish를 누른다.



잠시 진행상태 bar가 뜨고, 위와 비슷한 화면이 나온다. 결과를 확인하고 ok를 누르자. github 사이트의 방금 만든 레포지토리를 보면 정상적으로 프로젝트가 추가됐음을 확인할 수 있다. 깃허브에 저장된 프로젝트의 브랜치가 master임을 잘 보라.




-------------------------------------------------------


이제 pinawa는 tadakichi의 레포지토리에서 프로젝트를 받고, 수정사항을 적용할 수도 있다. 먼저 프로젝트를 다운받아 보자.


Package Explore에서 Import -> Git -> Projects from Git을 선택하고 넥스트를 누르자. 다음 Clone URI를 선택하고 다시 next를 누르면, 좀 전에 프로잭트를 등록했을 때와 비슷한 화면이 나온다. 아래와 같이 채워 주고, next를 눌러준다. user에는 프로젝트를 등록하려 하는 pinawa가 들어있음을 보라.








Branch Selection 화면으로 오는데, 우리는 master branch만 다운받을 예정이므로 그냥 next 누르면 된다. 만일 브랜치가 여러 개 있다면 복수로 다운받을 수 도 있을 것이다. 



Local Destination화면에서는 다운받을 프로젝트의 로컬 레포지토리의 디렉토리를 설정해준다. 앞서 tadakichi의 디렉토리와 동일하게 설정해줬다. 아래 configuration의 remote name이 origin인 것을 눈여겨 보라. 나중에 github의 레포지토리와 push, pull(fetch) 할 때 쓰는 설정의 이름이 될 것이다. next를 누른다.



다음 화면에서도 그냥 next를 누르면 된다. 그러면 Import pojects 화면이 뜨는데, 받을 프로젝트가 현재 1개 밖에 없으므로 그냥 Finish를 누르면 된다. 만일 브랜치에 복수의 프로젝트가 있었다면 선택 가능했을 것이다.



프로젝트가 제대로 임포트 된 것을 확인할 수 있다. 받은 프로젝트의 브랜치가 master로 되어있는 것을 확인하라.



pinawa는 프로젝트를 받은 후에, 우선 클래스 한 개를 새로 프로젝트에 추가하기로 한다. 보면 알겠지만, master 브랜치는 github와 직접 push, fetch 하는 브랜치이므로 여기에 직접 코딩하기 보다는 브랜치를 새로 만들어 코딩을 추가한 후, 바뀐 코딩을 master 브랜치에 적용시키는 것이 맞는 방법일 것이다. 


프로젝트에 오른 클릭 후 team->Switch tp -> New Branch를 누르면 화면이 뜬다.  Branch1이란 이름을 입력하고, 새로 만들 브랜치는 push와 pull을 위한 용도가 아니므로 Configure upstream for push and pull은 클릭하지 말도록 하자.



프로젝트의 브랜치가 Branch1으로 바뀐 것을 볼 수 있다. 다음과 같이 NewController라는 클래스를 추가하면, ?표가 달린 것을 볼 수 있다. 앞서 한 것 처럼 indexing하고 commit 하자.



브랜치를 Switch해서 다시 master로 돌아가보면, 방금 만들었던 NewController가 보이지 않는다. 이제 Merge를 해서 Branch1에 있던 새로 만든 클래스를 master 브랜치로 불러올 차례다. 



Merge를 누르고 나온 화면을 보자. 우리가 불러들일 클래스는 Branch1에 있으므로 Branch1을 클릭한 후 Merge를 누른다. 



master 브랜치에 NewController가 추가된 것을 볼 수 있다.




이제는 pinawa가 새로 추가한 NewController를 github에 추가할 차례다. 기본적으로 앞서 tadakichi가 했던 push와 동일하다고 보면 된다. source reference와 destination reference를 눈여겨 보길 바란다.



또한, pinawa가 push를 하기 앞서 tadakichi는 pinawa를 반드시 collaborator로 등록해줘야 한다. 그렇지 않으면 pinawa가 push하려 할 시에 다음과 같은 에러를 보게 될 것이다.



정상적으로 push가 됐으면 guthub에 가서 확인하자.



-------------------------------------------------------------


이제는 github의 master 브랜치에 저장되어 있는 변경된 내용을 tadakichi의 master 브랜치로 불러오는 것을 해보도록 하자.


team -> remote->fetch from을 선택하고 push할 때와 유사하게 진행하면 다음과 같은 화면이 나온다. 주의할 점은, destination ref칸에 아래과 같이 써줘야 한다는 점이다. 만일 이전 push 할 때처럼 refs/heads/master라고 기입하면 뭔가 fetch는 되지만 제대로 되지 않는데, 아무래도 버그인 듯 하다. 반드시 아래와 같이 refs/remotes/origin/master 라고 써줘야 한다.



Finish를 누르면 origin/master 브랜치에 변경된 내용이 저장될 것이다. 이를 Merge로 master 브랜치에 저장하면된다. 아래와 같이 origin/master브랜치에는 최근에 commit된 내용이 보인다.





지금까지 프로젝트를 진행하는데 가장 기본적인 EGIT 내용을 다뤄봤다. 아마 본인이 설명해놓은 방법보다 더 쉬운 방법도 있을 것이고, 틀린 내용도 있을 것이다. 실제 프로잭트를 진행하며 추가할 것은 추가하고 바꿀 것은 바꿔야 할 것이다.











Posted by 타다키치
,