ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 4. 협업 - Git CLI | 생활코딩
    INFO/Git 2020. 2. 28. 22:05
    반응형

    [출처 : https://opentutorials.org]

     

    3. git으로 같이 작업하기

    GIT을 이용해서 함께 작업하는 방법에 대한 수업입니다. 협업에 참여하는 사람에게 권한을 주고 저장소에 접근할 수 있도록 허용하는 방법을 소개합니다. 이 수업은 github.com의 collaborator 기능을 이용합니다. 

     

    # github의 public/private 소스에 push 하려면 원격저장소의 승인이 필요하다.

     

    # github에서 협업하려는 저장소의 setting 탭에서 협업자를 초대한다.    * invite link로도 초대가 가능

     

     

     

    4. git push & pull

    저장소에 새롭게 추가된 버전을 원격저장소로 push하고, 원격저장소의 내용을 지역저장소로 pull 하는 방법을 소개합니다. 

     

    [실습] 지역저장소 A, B가 있다.

    1. A에서 파일을 작업해서 원격저장소에 push

    2. B에서 A에서 작업한 같은 파일과 같은 부분을 수정하고 push

    3. pull을 하지 않았기 때문에 거절된다. 원격저장소를 pull 한다.

    4. 원격저장소의 같은 파일과 같은 부분을 수정했기 때문에 conflict(충돌)을 해결하고 push한다.

     

    ※ 협업할 때의 주의

     - 작업을 시작할 때 반드시원격저장소를 pull 해서 업데이트된 내용을 확인한다.

     - 작업을 진행하면서 push를 자주해야 충돌이 적게 발생한다.

     

     

     

    5. git pull VS fetch그리고 원격 브랜치

    본 수업에서는 pull과 fetch의 차이점인 아래 공식의 의미를 알아봅니다.

    git pull = git fetch + git merge FETCH_HEAD 

     

    # git log에서 커밋아이디 (HEAD -> master, origin/master)

    - HEAD -> master : 지역저장소의 master 브랜치

    - origin/master : origin이라는 이름의 원격저장소의 master 브랜치   

     *위 코드가 위치한 커밋아이디는 원격저장소 master 브랜치에서 pull한 마지막 버전을 의미한다.

     

    > git fetch  

    지역저장소의 버전은 유지한 채 원격저장소의 브랜치 버전만 가져온다(업데이트)

    * FETCH_HEAD : fetch한 원격저장소의 커밋아이디    *git fetch를 하게 되면 .git 내부에 자동 생성

     

    > git merge origin/master  

    원격저장소의 브랜치(원격추적브랜치)로 현재 브랜치를 병합한다.

     

    # git fetch + git merge FETCH_HEAD  =  git pull

       : 원격저장소의 브랜치 버전을 업데이트 + 해당 브랜치 버전으로 지역저장소를 병합

     

    ※ 원격저장소의 데이터를 신중하게 가져오고 싶을 때 사용

     

     

     

    6. git으로 오픈소스 참여하기

    6-1. patch

    [실습] 권한이 없는 원격저장소를 pull하고 지역저장소에서 작업을 한 뒤 commit을 한다.

     

    # 지역저장소에서 패치파일을 생성

    > git format-patch 버전아이디  버전아이디 이후에 작업한 버전을 .patch 파일로 만든다.

     .patch 파일은 해당하는 버전의 작업자, 작업시간, 작업내용 등을 확인할 수 있다.

     

    # 전달받은 patch 파일을 원격저장소에 적용 

    > git am -3 -i *.patch 모든 패치파일을 3 way merge 방식으로 적용한다.    *파일이름.patch는 하나의 파일만 적용

     -3 : 3 way merge 방식으로

     -i : patch를 적용할 때마다 어떻게 할 지를 물어본다.

     *.patch : 모든 patch 파일 선택

     

     

    6-2. pull request

    #pull request : 내가 작업한 내역을 다른 사람에게 가져가라고 깃호스팅을 이용해서 요청하는 것

    # Fork : 다른 사람의 원격저장소를 자신의 원격저장소로 복제한다

    # Clone : 특정 저장소를 자신의 지역저장소에 복사하여 새로운 저장소를 만든다,

     

    [실습]

    1. Fork한 원격저장소를 지역저장소로 clone 후 작업내역을 커밋한다.

    2. compare : Fork한 원격저장소에서 새로운 커밋을 원본저장소의 커밋과 비교한다

    3. Create pull request : 비교 후에 원본저장소의 관리자에게 가져가라고 요청한다.

    4. 원본저장소 관리자는 Pull request 탭에서 해당 내용을 확인하고 충돌이 있으면 해결한다.

    5. Merge pull request : Fork한 원격저장소에서 요청한 작업내역을 자신의 저장소에 병합한다.

     

     

     

    수업을 마치며

     

    # code review 

    드 리뷰 도구 Gerrit

    반응형

    댓글

Luster Sun