레이블이 Git인 게시물을 표시합니다. 모든 게시물 표시
레이블이 Git인 게시물을 표시합니다. 모든 게시물 표시

2016년 6월 22일 수요일

[Git Flow] egit + git bash를 이용한 Eclipse 에서 관리 방법


Git에서 효율적으로 branch 관리를 하기 위해서 Git flow를 활용한다.

개발 툴로 Eclipse를 쓰고 있고 빌드는 Gradle로 하고 있으므로

이에 맞춰서 활용할 수 있는 방법을 설명한다.

먼저 그전에 Git Flow 에 대해서 설명한다.

1. Git Flow
    Git Flow는 프로젝트 개발 시 사용하는 branch 모델 방법이다.
   이 모델은 총 5가지의 Branch 전략을 제공한다.

  •    feature – develop – release – hotfixes – master 로 되어 있으며 각각은 역할이 있다.

   1) master : master 브런치는 최종 점검을 마치고 릴리즈한 안정화된 브런치다.
   2) develop : 개발 중인 사항의 최종 통합 브런치다. 
   3) release : 제품 배포를 준비하는 브런치다. 
   4) feature : 조만간 제품을 배포하거나 또는 다음에 배포를 위한 기능 개발을 위한 브런치다.
   5) hotfixes : 버그를 잡기 위한 긴급 수정을 위한 브런치다.

2. Git Flow 사용법
    Git이 설치되어 있고 Eclipse 와 Egit Plugin이 설치되어 있다는 가정하에 진행한다.
   또한 현재 프로젝트는 Git Project일 경우로 한하여 진행한다.

     1) Git Flow를 설정할 프로젝트 폴더로 이동한다.

     2) 마우스 우클릭 후 Git Bash Here을 선택

      
  3) Git Bash에서 git status 명령어로 현재 이 프로젝트의 commit 상태를 확인한다.

     

   












4) 커밋할 사항이 아니면 gitignore 파일에 추가하거나 , git stash로 돌린다.













 5) 그 후 git flow init 명령어로 git flow를 실행한다.



    
   








 













  6) branch전략을 어떻게 할지 나오는데 계속 엔터치면서 지나가면 된다.

  


  





   
  7) 끝나면 branch가 master에서 develop으로 바뀐 것을 확인할 수 있다.



  
  
    




    

 

     8) 여기서 기능 개발을 하려고 한다면 feature 브런치를 만들어 주자.
     9) 명령어 git flow feature start '[branch detail name]'




    





      10) 작업이 완료되면 branch가 develop -> feature/[branch detail name] 으로 변경된다.



   
   





 



      11) 개발이 끝나면 git flow feature finish '[branch detail name]' 명령어를 입력한다.
      12) 배포 준비를 할 경우  release branch를 만들어 최종 release 점검을 진행한다.
















      13) 명령어 git flow release start '[branch detail name]'



     





      14) branch 가 deveop -> release/[branch detail name] 으로 변경 된다.








     



   



      15) 그 후 release 준비가 모두 끝나면 git flow release finish '[branch detail name]' 입력
      16) Tag Edit 화면이 뜨면 리눅스 입력창과 똑같이 하면 된다. a키 누르고 tag 넣고
             esc-> :wq 입력하면 저장된다.




  











    17) 그러면 branch 가 master로 변경되며 최종 release가 왼료 된다. 




참고 
http://huns.me/development/1131
http://mobicon.tistory.com/280

2013년 10월 30일 수요일

Git 개념부터 익히자.

드디어 포스트를 남긴다...

도저히 그냥은 기억을 못할것 같다..

회사에서 3년간 SVN 만 써오다가.. Git 를 써보려고 하는데..

이건 개념부터 "멘붕" 이 온다.. 그냥 닥치고..Eclipse 에다가

EGit Hub plugin 다운받고 해봐야지~하고 폼잡았는데...에라이. 하나도 모르겠다..

그래서 개념부터 차근차근 정리해 보려 한다.

1. SVN 과 Git 의 다른점

   - 일단, SVN 은 저장소가 서버에 있다.
   - 즉 , 서버에서 Check Out 받고 난 열심히 개발해서 서버로 Commit 하면 된다.

   - 근데 왜, Git 는 자꾸 내 컴퓨터 내에 다가 저장소를 만들라 하는가..



    그래서 이것부터 초 멘붕이 아닐수 없다.. 아니 왜???? 그럼 Git 는 팀프로젝트를

   어찌하나? ..?

   그래서 봤더니 Remote Repository 를 만들란다..이름하여 원격 저장소...

   즉.. 보니까... 작업해서 내 Local Repository 에 열심히 Commit 하고

   그 후에 원격 저장소에 Push 로 올리는 작업을 한다 한다.

   뭐 아래와 같은 느낌으로 말이지..



  그러니까 즉,, SVN 은 Commit 즉시 공동 Repository 로 올라가지만

  Git 는 로컬에도 한번 저장되고 원격 저장소에 한번 더 저장된다. 즉 나눠서 저장된다.

  라고 해서 , 분산버전관리시스템 이라고 한단다

   

   근데 솔직히... 뭐가 좋은지 모르겠어서 이것저것 찾아봤다..

   아니 문제 없으면 Commit 하는 거니까.. 마찬가지 아닌가 싶었다..

 
   장점 1 : 무지 빠르다. Commit 이나 Log 작업이 SVN에 비해 무지 빠르답니다.

              (이거야 당연하겠지..Local에 저장하는데...그다지 끌리진 않는다..)

   장점 2 : 커밋에 부담이 없습니다.

               (움.... 이건 쫌 괜찮다. 커밋 미리미리 하고 테스트 하고 , 내꺼에 Revision
                자유롭게 남기고. 오 이건 괜찮은듯)

   장점 3 : 원격 저장소가 망가졌거나 네트웍이 끊겨도 관리가 가능하다.

               (Git Win.. SVN 서버 날라가면 멘붕오고 Revision 관리 안되는것보다 훨낫다!)
               ( 이러면 나중에 복원도 될꺼아냐 Local 꺼 올리면 되니까.. 니가 짱먹어라)

 
 그래서 칭송하고 쓸까 생각했는데.. 이상한게 더있다-_-;;

Staging Area  란다..이건 또 뭔지..

보니까 SVN 에서는 연결된 파일들은 모두 Commit 해서 올려야 하지만.

Git 는 스테이지영역에 커밋할 것들만 올려 놓고 커밋하면 된다는 것 같다..

근데 이건 뭐..똑같자너 SVN 이랑..뭔차이여..

음..아무리봐도  Git 가 소스 충돌 나는 부분 까지 해결해주지는 못하는 것 같고..

그래서 찾아본 장점 중 하나가 , SnapShot 이란다.

SVN 을 써본 분들은 아시 겠지만, SVN은 파일이 변화한걸 저장하고

띄어쓰기를 하든 , 뭘 하든 뭔가 변화하면 Commit 이 가능하고

Commit 하면 Revision 이 올라가지요

근데 Git 는 SnapShot 으로 관리한단다..대체 뭔말인지..

이래저래 확인해봐도 아직 확 감은 오지 않는다.. 즉 쉽게 얘기해보면

커밋하는 당시 당시마다 , 프로젝트 전체 스크린샷을 찍는것 같고

그렇기 때문에 brunch 관리 라든지 전 버전을 확인한다는 작업이

수월 하다고 하는 듯하다..

자세한건 다시 좀더 살펴봐야 할 듯하네..