📜 제목으로 보기

개별 셋팅

관리자 짝 매칭 실시

  • 관리자 매칭 실시 image-20220210014115248

  • 피매칭자은 확인함. image-20220209105049849

원본레포에 각 github_id br 생성

  1. lecture클릭후 미션시작 클릭시 -> 자동으로 내 github_id로 —> 미션repo에 브랜치생성 image-20220221104639647 image-20220209105319168
  2. 미션시작으로 내 브랜치를 생성하면, 리뷰어도 자동 배정된다. image-20220210014238887)
    • 동시성 잇슈가 있을 땐, 관리자가 리뷰어를 재배정한다.
  3. 저장소로 와서 내 github_id생성된 branch가 정상 생성되었는지 미션repo에 branch 검색해서 확인한다

    image-20220209105548572

원본레포 각 fork

  1. 강의홈페이지를 통해 branch가 생성되었으나 팀원X push권한 X -> fork를 먼저 한다.
    • 문서를 보면서 스텝바이스텝으로 한다.
    • 여기선 1단계까지만 한다.
    • 이렇게 권한은 없지만 [강의홈페이지를 통한 원본repo에 이름만 내 github_id branch]가 생성된 상태로 -> fork한다.
      • fork가 내 계정으로 잘되어있어야한다
    • fork를 해도 기존 원본repo의 모든 branch들이 다 fork되어있다. 기본 main으로 되어있다. image-20220209110007703

github_id single-branch만 clone

  1. fork는 모든 branch그대로 보유 —> clone을 통해서 로컬로 가져올 때는 --single-branch만 가져오는 것이 가능하다.

    • 현업에서는 10개이내 branch이므로 git clone -b [branch명] --single-branch [fork한 레포명]가 필요가 없다 .
    • 내 이름의 branch가 main브랜치다. image-20220209110234909
     git clone -b {본인_아이디} --single-branch https://github.com/{본인_아이디}/{저장소 아이디}
        
     ex) git clone -b javajigi --single-branch https://github.com/javajigi/java-baseball.git
    
    • git clone -b is2js --single-branch https://github.com/is2js/java-racingcar.git
      • intellij 터미널에서 작업하면 된다.
     PS C:\Users\cho_desktop\IdeaProjects\missions> 
        
     git clone -b is2js --single-branch https://github.com/is2js/java-
     racingcar.git
    

​ -

  1. intellij에서 clone한 폴더를 open한다 image-20220209110718259
    • 내 이름의 싱글브랜치만 가져와지는지 확인한다. image-20220209110844686

step1 br(작업 br) 생성

  1. git checkout -b step1으로 첫번째 리뷰용 브랜치를 만든다.

    • –single-branch clone 한 입장에서 , 내 id_branch -> main브랜치
    • 작업할 branch -> step1 -> ... image-20220209110940186

    • cf) **git alias는 집착해서 알아야한다.-> **

      • gco main = git command

      • gba = git branch -a

          # windows git alias
          git config --global alias.co checkout
          git config --global alias.ci commit
          git config --global alias.st status
          git config --global alias.br branch
          git config --global alias.hist "log --pretty=format:'%h %ad | %s%d [%an]' --graph --date=short"
          git config --global alias.type 'cat-file -t'
          git config --global alias.dump 'cat-file -p'
                    
                    
          # shell git alias
          alias gs='git status '
          alias ga='git add '
          alias gb='git branch '
          alias gc='git commit'
          alias gd='git diff'
          alias gco='git checkout '
          alias gk='gitk --all&'
          alias gx='gitx --all'
                    
          alias got='git '
          alias get='git '
        

    image-20220209111042723

협업 시작 (A와 B)

  • 일단 github_id가 local에의 user.name과 동일한지 확인한다.

      git config user.name
    

image-20220211235150552

작업레포(local, A) 정하기

  • 페어와 CodeWithMe등으로 작업할 local 레포 정하기

    • 나의 경우, 네트워크 잇슈로 화면공유 + B를 colaborator 등록하여 B가 local에 step1--single-branch clone후 서로 push && pull 해서 작성함.

         git clone -b step1 --single-branch [git주소] [폴더명 or .]
      
  • 작업을 완료한 뒤 push까지 끝낸다.

A fork레포(remote 2) —fetch/merge–> B local레포

  1. 협업해서 push된 [A 원격레포-step1]를 2번째 remote repo로 등록한다.

    • 1번째는 fork한 나(B)의 원격레포

    • 2번째는 fork한 A의 원격레포

        git remote add pair<원격레포별칭> <Repo URL for pairs fork> 
              
        git remote -v
      
      • origin: 원격 저장소를 가리키는 일반적인 별칭
      • pair: 내가 정한 추가 원격 레포의 별칭
  2. A 원격레포(remote pair)의 step1(협업했던br)의 내용만 fetch해온다.

    • A pair repo -> B local repo
      • 우리는 pull을 해버렸다. pull할때마다 merge로 표기되니 조심.
    • git fetch : 다른 사람의 branch의 내용을 가져와 확인한 뒤 (나중에) merge 하고 싶을때 fetch를 사용
    • 아직 merge는 하지 않았기 때문에 인텔리제이에 가져온 코드들이 보이진 않을 것이다.
     git fetch pair step1
    
    • 안되면 git fetch pair/step1
  3. fetch로 내역들을 확인했으면 merge한다.

     git merge pair/step1
    
    • fetch는 띄워쓰기 / merge는 fetch된 것을 /로 연결

A fork레포(remote2) -> B fork레포(remote1)

  1. 정보를 줄 pair(remote2)의 협업br(step1)로 HEAD 이동시켜놓기

     git checkout pair<원격레포별칭>/step1<협업br>
    
  2. 정보를 받을 origin(remote1)의 협업br(step1)으로 push하기

    • A pair repo -> B remote repo
      • remote —> remote로 commit내역을 넘기나보다.
      • fetch -> merge로 local에 가져왔다면, 원격에서 원격으로 한번더 가져오나보다.
      git push --force origin step1
    

사실… B local -> B fork로 가는게 맞다?

코드리뷰 요청

페어 끊기

  1. 우테코 홈피 -> 나의팀 -> 피드백을 누르면 페어가 끊어진다.
    • 페어가 끊어져야 리뷰요청이 활성화된다?! image-20220211235821456

forkRepo -> 원본Repo PR (리뷰요청)

  1. fork 원격레포step1 br로 이동한 뒤, 원본(미션)repo로 PR를 누른다.
    • PR을 통한 코드리뷰는
      • fork레포- 작업br(step1)에서 PR을 걸어 -> 원본레포나와관련된 br(is2js)에 요청하는 것
      • fork레포의 관련br(is2js)가 아닌 것에 주의하자.
    • PR 받는 곳 원본레포: base repository - is2js(관련 br)
    • PR 보내는 곳 fork레포: head repository - step1(작업br)
      • branch를 잘 선택해야한다. image-20220212101727289
  2. PR메세지까지 다 작성해서 제출한다.

홈피->slack에 리뷰요청 알림

  1. 우측 상단에 리뷰요청 image-20220212000745529 image-20220212000754317

  2. slack으로 메세지 전달

    image-20220212000814375

slack->피드백 알림 -> 로컬수정 -> PUSH로 피드백반영 -> 홈피 리뷰요청2

  1. 슬랙으로 피드백 반영해달라고 알림이 온다
    • 날렸던 PR에 그대로 코드리뷰가 반영되어있다.
  2. local에서 step1 br로 수정한다.
  3. local step1 -> remote step1 PUSH 하는 순간 피드백 반영되므로 조심하자.
    • 추가 PR은 필요 없다.
  4. push로 피드백 반영이 끝났으면 우테코 학습 홈피 -> 우측상단 리뷰요청 -> 리뷰요청 -> slack메세지
  5. 리뷰어가 피드백을 보고 merge해줄 것이다. 그럼 다음 단계로 진행하면 된다.