KDT/Cloud

240315 Cloud - Git & GitHub 2

001cloudid 2024. 3. 15. 12:51
728x90

여러 명이 함께 Git 협업

Git에서 병렬 버전 관리는 Branch를 통해서 관리

※이클립스에서 깃을 사용할 때만 토큰이 필요함 VSCode나 Git Bash에서는 필요없음

  1. 프로젝트에서 A가 팀장을 맡았고 A의 GitHub 계정에 저장소를 생성하여 master를 관리.
    A는 우선 자신의 GitHub계정에 저장소를 생성(reservation_project)

  2. A는 자신의 로컬저장소를 이용해 작업을 진행
    이클립스로 Project_EX 프로젝트를 생성
    A는 메인페이지를 담당하여 'introduction'이라는 폴더를 생성하고 introduction.jsp를 생성

  3. Project_EX 폴더에 git 초기화 및 커밋, 푸시
    VSCode Open Folder Project_EX
    Ctrl+` (terminal)+ 버튼으로 Git Base으로 변경(기본값 powershell)
    git init
    git add .
    git commit -m "first commit"
    git remote add origin https://github.com/mystory001/reservation_project.git
    git push origin master

  4. A는 자신의 GitHub에 파일이 잘 업로드 되었는지 확인(새로고침)

  5. 프로젝트 조원 B의 경우. B는 관리자 페이지를 담당
    A가 만들고 업로드 한 github에 작성된 버전을 받아옴
    이때 git pull 명령어를 사용

  6. B의 작업 pull로 받아오기
    VSCode로 새 창 열기 - 폴더 열기 - workspace_web 폴더 선택
    Ctrl + ` + 버튼으로 Git Base로 변경 후
    git clone https://github.com/mystory001/reservation_project.git Project_EX_B

    clone : 복제. 깃 허브에 있는 것을 내 로컬 저장소로 가져오기
    fork : 원격 저장소에서 내 원격 저장소로 들고 오기

  7.  VSCode와 워크스페이스에는 존재하지만 이클립스에는 없음.
    File -> import -> General -> Exsisting Projects into Workspace 선택. Browse를 눌러서 Project_Ex_B 선택 Finish

  8. VSCode의 폴더 열기를 선택하고 Proejct_EX_B를 선택
    (또는 Project_EX_B 폴더로 이동하여 Open Git Bash Here)

  9. A가 만든 introduction 폴더에 introduction.jsp가 보이고
    B는 관리자 페이지를 담당하여 admin 폴더를 생성하고 adminMain.jsp를 생성
    B는 VSCode에서 터미널을 열어(Ctrl + `)
    git add .
    git commit -m "B의 첫 커밋. admin 폴더와 adminMain.jsp 생성"
    여기서 커밋 결과를 github에 업로드시 git push origin master를 하면 안됨. master는 A가 마지막에 합쳐서 프로젝트 합본을 만들 때 사용. 따라서 B는 master와는 별개의 공간인 곳에서 자신의 작업을 진행해야 함
    git checkout -b branch_B => B가 사용할 가지(새로운 공간)를 만듦. master에서 branch_B로 변경됨

    ※보통은 Prod(Master), <- Dev <- 각자의 작업공간(Branch)

  10. B가 작업한 내용을 업로드
    git push origin branch_B

  11. B가 작업을 했고 branch_B에 push(업로드)한 내용을 A에게 알리고 A는 master에 병합(merge)하는 과정을 진행
    gitHub 페이지를 새로고침하면 "branch_B had recent pushs.."라는 메세지가 보이고
    오른쪽에 'Compare & pull request' 클릭
    만약 안보인다면 상단에 Pull requests 메뉴를 누르고 Compare & pull request 누르면 됨
    base : master <- compare : branch_B 확인
    Add a title, Add a description에 내용을 작성한 후 'Create pull request'버튼을 클릭
    Pull requests가 생기고 branch_B의 내용을 master에게 보낼 수 있도록 허락을 구하는 중이라고 생각하면 됨


  12. 팀장 A가 gitHub에 접속했다고 가정
    상단 Pull requests에 1이 뜸 -> 확인 -> 마우스를 올려두면
    -> 팀원 B가 작업을 하여 branch_B에서 master로 보내온 것을 알 수 있음

  13. 클릭하여 'Files changed'클릭하면 코드 내용을 확인 할 수 있고, Review changes를 클릭하면 Approve(승인), Request changes(거절)를 선택 할 수 있음

  14. 코드에 별 문제가 없다고 가정하고 진행
    Conversation으로 돌아와 Merge pull request 클릭 Comfirm merge 클릭 시 master에 합쳐짐
    Pull request successfully merged and closed

  15. 상단 탭 Code로 이동하여 src/main/webapp에 들어가면 admin폴더와 아래에 adminMain.jsp이 생긴 것을 확인할 수 있음

  16. B가 작업을 A를 포함하여 다른 팀원들이 작업을 각각 했다고 가정
    각 팀원들은 수정, 병합된 최종 프로젝트를 동기화 시켜줘야함.
    A가 작업 중이던 Project_EX 폴더가 열린 VS Code로 이동
    jsp파일 하나를 수정

  17. A가 작업 중인 로컬 저장소에는 아직 B가 작업한 admin/adminMain.jsp가 없음
    이는 동기화를 진행하지 않았기 때문임
    git pull origin master 를 입력하여 최종 버전의 master를 동기화 시킴

  18. git add . 명령어로 수정된 introdction.jsp 파일 추가(스테이지에 올림)

  19. git commit -m "메인 페이지 수정"을 입력해서 커밋(새로운 버전)을 만듦

  20. git push origin master 를 입력해서 master에 업로드
    => 팀원들은 자신에게 할당된 branch에 작업을 하고, 마지막 최종 버전을 A가 master에 push할 수 있도록 함

  21. gitHub 페이지로 이동하여 introduction.jsp를 살펴보면 수정된 내용이 잘 반영된 것을 확인할 수 있음

  22. 팀원들은 작업을 하기 전 git pull origin master를 입력해서 동기화 시켜놓고 본인의 작업을 하고
    할당된 자신의 branch에 push하고 pull하는 작업을 반복하면서 프로젝트를 완성시킴

협업 시 branch 사용

  1. 협업자는 commit을 올릴 branch를 생성 : git checkout -b branch명
  2. 자신이 만든 branch로 이동 : git checkout branch명
  3. branch에 commit을 올리고 : git push origin branch명
  4. 코딩이 완료되면 branch를 합치기(팀장의 역할) : git merge master
    ※하기 전 반드시 코드리뷰를 해야함!

 

여러명이 함께 협업하기 시나리오 2

  1. 팀장이 gitHub에서 저장소를 생성
  2. 팀원 초대
  3. Add collaborators to this repository - Invite collaborators - Mange access - Add peole
    username, full name, or email을 검색하여 초대
  4. 팀장이 초대를 하면 Pending invite 상태로 보임. 초대를 수락하지 않은 상태
    이메일 또는 gitHub에서 수락할 수 있음. View Invitation 버튼을 누르면 404페이지가 뜰 수 있으며 로그인을
    통해 Accept invitation 버튼을 눌러 수락
  5. 팀장은 초기세팅. 자신의 로컬 컴퓨터의 드라이브에 폴더 생성한 후 VS Code로 폴더를 열고 index.html을 생성
  6. 생성한 index.html은 로컬 컴퓨터에 저장된 것이며 gitHub로 전송
    Ctrl + ` 입력하여 터미널 창을 열기
    현재 'master' branch만 있으며 'master' branch는 최종 결과만 넣는 branch로 가정
    git init
    git add .
    git commit -m "first commit"
    git remote add origin 주소
    git push origin master
  7. 새로고침을 하면 index.html이 보임
  8. 개발을 진행할 develop branch를 생성
    개발을 진행할 때는 develop branch를 활용하고 최종 결과물만 master branch에 올리도록 해야 안정적
    VS Code에서 develop branch를 만들기
    git checkout -b develop
  9. git push 를 입력하면 오류가 발생, develop branch를 만들었어도 로컬에서만 생성되었고 gitHub에서는 만들어지지 않음
    git push --set-upstream origin develop 명령어를 넣어서 gitHub에도 branch를 생성해줌
  10. gitHub 사이트에서 새로고침하면 생성한 develop branch가 보임
  11. master branch는 최종 결과물이 올라갈 branch이므로 팀원이 함부로 코드를 push하지 못하도록 보안 성정
    Settings 메뉴 - Branches -> Add branch protection rule -> 
    Branch name pattern : master,
    Require a pull request before mergin 체크, Lock branch 체크
    -> Create
  12. master branch 보안 규칙이 잘 적용되었는지 확인
    VS Code에서 git checkout master를 입력해서 branch 변경
    index.html 내용을 수정
    git add .
    git commit -m "button 추가"
    git push origin master -> rejected 오류 발생
  13. git checkout develop 명령어로 develop branch로 변경
  14. gitHub 사이트의 상단에 Projects 메뉴 클릭 Link a project - create new project - Board 선택 -> Create project
    보드 타입의 프로젝트 화면이 나타남
  15. username's Untitle Project를 클릭해서 이름 변경
    Manager access 탭 클릭 Role : Write - 초대
  16. Todo 아래 +Add item을 클릭해서 '로그인/로그아웃', '회원가입' 만들기
    만들어진 '로그인/로그아웃'을 선택하고 오른쪽 항목에서 Add assignees...에 기능을 맡을 사람을 명시
  17. 로그인/로그아웃 항목을 드래그인 드롭으로 In Progress에 넣어 현재 작업 중이라는 사실을 알림.
    '로그인/로그아웃'을 누르고 오른쪽 항목 중 'Convert to issue'를 클릭하고 프로젝트를 선택
  18. 각 기능에 해당하는 브랜치를 만들어서 작업 후 develop branch로 합치는 방식으로 작업이 진행됨
    작업 단위를 '티켓'이라고 하며 티켓에서 오른쪽 'Development' 아래 Create a branch 클릭
    Branch name : login 이라고 설정하고 Branch source는 develop을 설정한 후 Create branch 클릭
    ※ master 보다 develop이 최신 작업이 되었을 확률이 높으며 master branch 소스로 하면 충돌이 발생할 수 있음
  19. Create branch 버튼을 클릭하면 Checkout in your local repository 창이 생성되고
    복사하여 VS Code 터미널에 붙여넣음
    ------ 프로젝트 기본 세팅
  20. 팀원 A의 개발 과정을 살펴보기. 윈도우에서 cmd 창을 열어 d: 를 입력하여 D: 드라이브로 이동하고,
    git clone 깃허브 주소 폴더명
    ex) https://github.com/ba-boya/Class1Team2Project.git
    => 작업한 내용을 그대로 복사
  21. 생성된 티켓 중 '회원가입'을 클릭하고 Convert to issue를 클릭
    Create a branch를 선택하여 생성된 창에 Branch name : join
    Branch source를 develop으로 설정하고 Create branch
  22. Checkout in your local repository 창에서 git fench, git checkout을 복사하여 터미널에 붙여넣기
    VS Code를 열어 클론한 Class1Team2Project 폴더를 선택한 후 터미널을 열어 복사한 내용을 붙어넣음
    Branch가 join으로 변경
    왼쪽 탐색창에서 새폴더 버튼을 누르고 joinMember.html을 만듦
    git add .
    git commit -m "사원회원가입 생성"
    git push
  23. gitHub사이트로 이동 join branch를 선택하면 index.html과 joinMember.html 파일이 보임
    작업한 내용을 push해야하는데 master가 아닌 develop branch로 보내야함
  24. pull request를 만듦. 상단의 Pull request 메뉴 클릭

※VS Code에 터미널 기본을 git base로 바꾸기

Ctrl + Shift + P -> Terminal : Select Default Profile에서 Git Base 선택
또는 +v 에서 Select Default Profile에서 Git Base 선택

기본 터미널이 Git Base로 변경됨

728x90

'KDT > Cloud' 카테고리의 다른 글

240405 Cloud - 취약점 스캐닝  (0) 2024.04.05
240322 Cloud - 칼리 리눅스(Kali Linux)  (0) 2024.03.22
240308 Cloud - Git & GitHub 1  (0) 2024.03.08
240223 Cloud - HTTPS  (0) 2024.02.23
240216 Cloud  (0) 2024.02.16