728x90
여러 명이 함께 Git 협업
Git에서 병렬 버전 관리는 Branch를 통해서 관리
※이클립스에서 깃을 사용할 때만 토큰이 필요함 VSCode나 Git Bash에서는 필요없음
- 프로젝트에서 A가 팀장을 맡았고 A의 GitHub 계정에 저장소를 생성하여 master를 관리.
A는 우선 자신의 GitHub계정에 저장소를 생성(reservation_project) - A는 자신의 로컬저장소를 이용해 작업을 진행
이클립스로 Project_EX 프로젝트를 생성
A는 메인페이지를 담당하여 'introduction'이라는 폴더를 생성하고 introduction.jsp를 생성 - 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 - A는 자신의 GitHub에 파일이 잘 업로드 되었는지 확인(새로고침)
- 프로젝트 조원 B의 경우. B는 관리자 페이지를 담당
A가 만들고 업로드 한 github에 작성된 버전을 받아옴
이때 git pull 명령어를 사용 - B의 작업 pull로 받아오기
VSCode로 새 창 열기 - 폴더 열기 - workspace_web 폴더 선택
Ctrl + ` + 버튼으로 Git Base로 변경 후
git clone https://github.com/mystory001/reservation_project.git Project_EX_B
※
clone : 복제. 깃 허브에 있는 것을 내 로컬 저장소로 가져오기
fork : 원격 저장소에서 내 원격 저장소로 들고 오기 - VSCode와 워크스페이스에는 존재하지만 이클립스에는 없음.
File -> import -> General -> Exsisting Projects into Workspace 선택. Browse를 눌러서 Project_Ex_B 선택 Finish - VSCode의 폴더 열기를 선택하고 Proejct_EX_B를 선택
(또는 Project_EX_B 폴더로 이동하여 Open Git Bash Here) - 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) - B가 작업한 내용을 업로드
git push origin branch_B - 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에게 보낼 수 있도록 허락을 구하는 중이라고 생각하면 됨 - 팀장 A가 gitHub에 접속했다고 가정
상단 Pull requests에 1이 뜸 -> 확인 -> 마우스를 올려두면
-> 팀원 B가 작업을 하여 branch_B에서 master로 보내온 것을 알 수 있음 - 클릭하여 'Files changed'클릭하면 코드 내용을 확인 할 수 있고, Review changes를 클릭하면 Approve(승인), Request changes(거절)를 선택 할 수 있음
- 코드에 별 문제가 없다고 가정하고 진행
Conversation으로 돌아와 Merge pull request 클릭 Comfirm merge 클릭 시 master에 합쳐짐
Pull request successfully merged and closed - 상단 탭 Code로 이동하여 src/main/webapp에 들어가면 admin폴더와 아래에 adminMain.jsp이 생긴 것을 확인할 수 있음
- B가 작업을 A를 포함하여 다른 팀원들이 작업을 각각 했다고 가정
각 팀원들은 수정, 병합된 최종 프로젝트를 동기화 시켜줘야함.
A가 작업 중이던 Project_EX 폴더가 열린 VS Code로 이동
jsp파일 하나를 수정 - A가 작업 중인 로컬 저장소에는 아직 B가 작업한 admin/adminMain.jsp가 없음
이는 동기화를 진행하지 않았기 때문임
git pull origin master 를 입력하여 최종 버전의 master를 동기화 시킴 - git add . 명령어로 수정된 introdction.jsp 파일 추가(스테이지에 올림)
- git commit -m "메인 페이지 수정"을 입력해서 커밋(새로운 버전)을 만듦
- git push origin master 를 입력해서 master에 업로드
=> 팀원들은 자신에게 할당된 branch에 작업을 하고, 마지막 최종 버전을 A가 master에 push할 수 있도록 함 - gitHub 페이지로 이동하여 introduction.jsp를 살펴보면 수정된 내용이 잘 반영된 것을 확인할 수 있음
- 팀원들은 작업을 하기 전 git pull origin master를 입력해서 동기화 시켜놓고 본인의 작업을 하고
할당된 자신의 branch에 push하고 pull하는 작업을 반복하면서 프로젝트를 완성시킴
협업 시 branch 사용
- 협업자는 commit을 올릴 branch를 생성 : git checkout -b branch명
- 자신이 만든 branch로 이동 : git checkout branch명
- branch에 commit을 올리고 : git push origin branch명
- 코딩이 완료되면 branch를 합치기(팀장의 역할) : git merge master
※하기 전 반드시 코드리뷰를 해야함!
여러명이 함께 협업하기 시나리오 2
- 팀장이 gitHub에서 저장소를 생성
- 팀원 초대
- Add collaborators to this repository - Invite collaborators - Mange access - Add peole
username, full name, or email을 검색하여 초대 - 팀장이 초대를 하면 Pending invite 상태로 보임. 초대를 수락하지 않은 상태
이메일 또는 gitHub에서 수락할 수 있음. View Invitation 버튼을 누르면 404페이지가 뜰 수 있으며 로그인을
통해 Accept invitation 버튼을 눌러 수락 - 팀장은 초기세팅. 자신의 로컬 컴퓨터의 드라이브에 폴더 생성한 후 VS Code로 폴더를 열고 index.html을 생성
- 생성한 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 - 새로고침을 하면 index.html이 보임
- 개발을 진행할 develop branch를 생성
개발을 진행할 때는 develop branch를 활용하고 최종 결과물만 master branch에 올리도록 해야 안정적
VS Code에서 develop branch를 만들기
git checkout -b develop - git push 를 입력하면 오류가 발생, develop branch를 만들었어도 로컬에서만 생성되었고 gitHub에서는 만들어지지 않음
git push --set-upstream origin develop 명령어를 넣어서 gitHub에도 branch를 생성해줌 - gitHub 사이트에서 새로고침하면 생성한 develop branch가 보임
- master branch는 최종 결과물이 올라갈 branch이므로 팀원이 함부로 코드를 push하지 못하도록 보안 성정
Settings 메뉴 - Branches -> Add branch protection rule ->
Branch name pattern : master,
Require a pull request before mergin 체크, Lock branch 체크
-> Create - master branch 보안 규칙이 잘 적용되었는지 확인
VS Code에서 git checkout master를 입력해서 branch 변경
index.html 내용을 수정
git add .
git commit -m "button 추가"
git push origin master -> rejected 오류 발생 - git checkout develop 명령어로 develop branch로 변경
- gitHub 사이트의 상단에 Projects 메뉴 클릭 Link a project - create new project - Board 선택 -> Create project
보드 타입의 프로젝트 화면이 나타남 - username's Untitle Project를 클릭해서 이름 변경
Manager access 탭 클릭 Role : Write - 초대 - Todo 아래 +Add item을 클릭해서 '로그인/로그아웃', '회원가입' 만들기
만들어진 '로그인/로그아웃'을 선택하고 오른쪽 항목에서 Add assignees...에 기능을 맡을 사람을 명시 - 로그인/로그아웃 항목을 드래그인 드롭으로 In Progress에 넣어 현재 작업 중이라는 사실을 알림.
'로그인/로그아웃'을 누르고 오른쪽 항목 중 'Convert to issue'를 클릭하고 프로젝트를 선택 - 각 기능에 해당하는 브랜치를 만들어서 작업 후 develop branch로 합치는 방식으로 작업이 진행됨
작업 단위를 '티켓'이라고 하며 티켓에서 오른쪽 'Development' 아래 Create a branch 클릭
Branch name : login 이라고 설정하고 Branch source는 develop을 설정한 후 Create branch 클릭
※ master 보다 develop이 최신 작업이 되었을 확률이 높으며 master branch 소스로 하면 충돌이 발생할 수 있음 - Create branch 버튼을 클릭하면 Checkout in your local repository 창이 생성되고
복사하여 VS Code 터미널에 붙여넣음
------ 프로젝트 기본 세팅 - 팀원 A의 개발 과정을 살펴보기. 윈도우에서 cmd 창을 열어 d: 를 입력하여 D: 드라이브로 이동하고,
git clone 깃허브 주소 폴더명
ex) https://github.com/ba-boya/Class1Team2Project.git
=> 작업한 내용을 그대로 복사 - 생성된 티켓 중 '회원가입'을 클릭하고 Convert to issue를 클릭
Create a branch를 선택하여 생성된 창에 Branch name : join
Branch source를 develop으로 설정하고 Create branch - Checkout in your local repository 창에서 git fench, git checkout을 복사하여 터미널에 붙여넣기
VS Code를 열어 클론한 Class1Team2Project 폴더를 선택한 후 터미널을 열어 복사한 내용을 붙어넣음
Branch가 join으로 변경
왼쪽 탐색창에서 새폴더 버튼을 누르고 joinMember.html을 만듦
git add .
git commit -m "사원회원가입 생성"
git push - gitHub사이트로 이동 join branch를 선택하면 index.html과 joinMember.html 파일이 보임
작업한 내용을 push해야하는데 master가 아닌 develop branch로 보내야함 - 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 |