ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Git 과 GitHub
    Thinking 2018. 4. 6. 22:03




    - Git & GitHub



    - Git : 버전 관리를 위한 도구 

    - Github : 분산 버전 관리 툴인 Git을 사용하는 프로젝트를 지원하는 웹호스팅 서비스



    Git의 정의에 '버전 관리'라는 말이 있다.

    버전 관리? 무슨 시스템을 버전 관리라고 말하는 것일까?


    버전 관리란 소스 하나 또는 묶음을 하나의 버전으로 간주하여 관리를 하는것을 뜻한다.

    - 파일/폴더를 추가/수정/삭제하여 사용자가 직접 묶음을 버전으로 관리하는것

    - 사용자가 원할때 예전 버전으로 내용을 되돌릴수 있는것

    - 복잡한 코드를 개발할때 이전 버전과 비교해서 보기가 쉬움


    버전 관리의 도구로서는 CVS , SVN (Subversion) , Git 순으로 기능이 추가되면서 보편화되어 발전되어져왔다.




    Git 의 용어로는 Commit,Pull,Push,Branch,Merage 등이 있다.


    Commit - 추가/수정/삭제된 폴더/파일들을 1개 버전으로 간주하여 내 컴퓨터 로컬에 버전 정보를 기록한다.


    Pull - Git 저장소 서버로부터 내 컴퓨터 로컬로 버전 정보 전체를 가져온다.


    Push - 내 컴퓨터 로컬에 저장되어 있던 버전 정보를 Git 저장소 서버로 올린다.


    Branch - 버전들을 묶어서 Branch 라고 하며 기본은 master 이다.

     - 프로젝트 디렉토리를 카피한것처럼 같은 효과를 두는.... 2개이상의 branch를 만들어 실험적인 코드 추가할때 사용한다.




    그렇다면 Git을 사용하여 프로젝트를 좀더 효율적으로 관리및 협업하게 해주는 GitHub에 대해 공부해 보자.


    먼저 우리는 Git 을 내 컴퓨터 GUI 환경에 사용할수 있도록 만든 프로그램이 필요하다.


    대표적으로 SourceTree 라는 프로그램을 사용할 것이며 홈페이지에 각각의 os 에 따른 다운로드와 설치를 진행 할 수 있다.


    이미 사용하고 있는 필자의 SourceTree 화면이다.


     

    자, 이제 준비물을 되었고 시작을 해보자.

    전체적인 흐름은 GitHub으로 다른 사용자의 저장소 을 Fork 하여 소스를 수정하고 다시 적용시키는 방향으로 이어가겠다.



    대략적인 도식화은 위와 같으며 지금 보면 굉장히 복잡해 보이지만 하나씩 공부해나가 보자.



    1. Fork 




    우리는 다른 git 저장소를 수정하여 관리할수도록 Fork 작업을 먼저 진행해야 한다.


    먼저 특정 다른 저장소로 가서 상단의 Fork 을 누른다.


    지금 예시로는 kingdom0608 의 H6-server 저장소의 Fork 하는 그림이다.




    이렇게 Fork를 하게 되면 내 저장소에 H6-server 저장소가 Fork가 되었다는 것을 확인할 수있다.






    2. Pull





    다음은 내 원격저장소을 로컬 저장소에 내려받는 작업인 Pull 단계이다.

    이제 우리가 설치한 SourceTree 프로그램을 이용할때이다.


    먼저 내 로컬저장소를 내 컴퓨터중 아무 경로에 만들어야 한다. SourceTree 의 상단 메뉴중 'Create'을 누른후 경로를 지정한다.


    'Create Repository On Account' 의 체크박스는 해제하고 만든다.


    그 후 만들어진 내 로컬 저장소의 탭을 누른후 상단의 메뉴바에 'Repository -> Repository Settings"으로 이동한다.




    그후 'Repository Settings' 라는 작은 새 창에서 내 원격 저장소를 추가 해줘야 하기때문에 'Add'을 누른 후 



    Remote name 에는 내 원격 저장소의 이름을, URL/Path 에는 내 원격저장소의 git 주소를 입력한후 'OK' 을 누른다.





    왼쪽 탭바에 REMOTES에 내 원격 저장소를 누른후 오른쪽 클릭으로 'Pull from H6-server' 을 누른다.

     


    'Pull' 이라는 새 창이 뜨게되면 'OK' 버튼이 활성화 되어있으면 누르면 되고 그렇지 못하다면 'Remote branch to pull' 에서  원하는 branch 부분을 Refresh 시켜야한다. 필자는 'master' 와 'dev' 두개의 branch 중 'dev' 을 선택후 실행하였다.


    성공적을 실행이 되어 내 원격저장소의 파일들이 로컬저장소에 Pull 되어진 화면이다.





    3. Branch & Commit & Merge




    처음 로컬저장소를 만들때 지정한 경로의 위치에 담겨져있는 것을 확인이 되었으면 이제 내 로컬 저장소에서 작업이 가능하다.

    왼쪽 탭바에 BRANCHES 부분에 master 라고 적혀져있다.

    master 는 관례적으로 main branch를 뜻한다.

    소스를 수정하기 위해 master branch를 수정해야 하는데 git에서는 master branch에서 다른 branch를 생성해서 작업하는게 일반적이다.


    소스트리의 내 로컬 저장소 탭 상단부분의 'Branch'을 누른다.





    여기서 필자는 'example' 이라는 새로운 branch를 생성하여 작업을 진행하도록 하겠다.




    'example' 로 만들어진 branch을 누른후 작업을 실행해보자. 

    간단한 작업만을 추가하기 위해 test.html을 새로 만들고 저장하자.







    그 후 SourceTree 화면으로 넘어가보면 왼쪽 탭은 Working Copy 누르게 되면 보여지는 인터페이스들에 대한 설명이다.


    1. Unstaged files  - 수정된 파일들의 목록들이 표시되는 공간

              - Stage All 버튼을 통해 Staged files 이동


    2. Staged files ( 중간단계 ) - commit 을 통해서 만들어진 버전에 포함할 공간

          - commit을 통해 Repository 로 이동


    3. Repository    - 각각의 버전들이 저장되어 있는 공간



    로컬 저장소에 추가된 test.html 파일이 Unstaged files 위치하게 될것이며 이 파일을 Staged files로 위치시키면 Commit 할 준비가 되어진 상태가 된다.

    Commit 은 현재 내 로컬 저장소에 소스를 적용해서 Log/History를 남기는 것으로 Commit 을 하기 위해서는 아래의 창에 message를 남긴 후 Commit 을 눌러야 한다.

     


    다시 BRANCHES 의 example 로 오게 되면 새로운 버전이 추가되어진 것을 확인 할수 있다.




    example Branch에 새 버전이 추가된것을 확인하고 마지막으로 원래의 master 메인 Branch에 Merge 작업을 해보자.


    master branch를 누른후 커서를 example Branch로 갔다대고 오른쪽 클릭을 한후 'Merge example into current branch' 을 누른다


    Merge 는 '병합한다' 의 의미여서 example branch를 master branch에 병합한다는 뜻이며 실행 결과는 다은 그림과 같다.




    4. Push




    이제 로컬 저장소에 행해지는 수정 작업은 끝이 났다. 로컬 저장소에서 내 원격 저장소에서 전송하는 과정인 Push 부분이다.


    간단하다.  


    로컬 저장소 탭 상단부분의 'Push'를 누른다.



    Push 창으로 새창이 나왔을때 master branch 를 체크 하고 'Push' 버튼을 누른다.



    그리고 내 원격 저장소에 index.html 파일이 추가된 새 버전이 업데이트 된것을 확인 할수 있다.



    5. Pull Request




    이제 마지막단계로 내 원격저장소에서 원본 저장소인 H6-server 에 적용하기 위해 Pull Request 를 보내야한다.

    Pull Request를 사용하는 이유는 원본 저장소에는 쓰기권한이 없기 때문에 수정한 내용을 Pull Request로 보내면 원본저장소의 관리자가 내용을 확인한 뒤에 승인을 하면 Pull Request의 내용이 원본저장소에 merge가 된다.

    (물론 승인하지 않고 거절(reject) 할 수도 있다.)


    내 원격저장소의 상단 부분의 Pull request을 선택후 New pull request 버튼을 누른후,



    내 원격저장소의 master branch 에서 원본 저장소의 branch에 Pull Request을 보내도록 설정하고 'Create pull request을 누른다.


    간단한 주석을 달고 보낸후 원본 H6-server 의 Pull request을 들어가면 제대로 온것을 확인할수 있으며


    수정된 코드를 확인후 merge 할수 있게된다.




    Fork 에서 Pull Request 까지 GitHup 의 대략적인 사용법을 알아봤다.

    이밖에 Clone , Tag, Cherry pick 등 다양한 git 사용법이 있으니 추가적으로 학습을 하면 도움이 많이 될것이다.



    https://www.slideshare.net/ianychoi/git-github-46020592


    https://blog.outsider.ne.kr/865


    https://www.slideshare.net/soymilkvegemil/140109-43340824



    'Thinking' 카테고리의 다른 글

    Slack  (0) 2018.04.07
    URI & URL  (1) 2018.04.02
    CDN Server  (0) 2018.04.01
    Framework & Library  (0) 2018.03.25
    Front end & Back end  (0) 2018.03.25
Designed by Tistory.