흐름 요약
- 포크(fork): 다른 사람의 리포지토리를 내 GitHub 계정으로 복사.
- 클론(clone): 내 로컬 컴퓨터로 복사된 리포지토리 가져오기.
- 브랜치(branch): 독립적으로 작업할 수 있도록 브랜치를 생성하여 개발.
- 커밋(commit): 작업한 내용을 기록하고 버전 관리.
- 푸시(push): 로컬 작업을 GitHub 원격 리포지토리로 업로드.
- 풀 리퀘스트(pull request): 변경 사항을 리포지토리 소유자에게 리뷰 요청.
- 머지(merge): 변경 사항을 원본 리포지토리의 main 브랜치에 통합.
전체 흐름 요약
- 리포지토리 생성: A가 프로젝트 리포지토리를 생성하고, B를 협업자로 초대.
- 브랜치 생성: B가 자신의 로컬 브랜치를 만들고 작업.
- 커밋 및 푸시: B가 작업 후 커밋하고 푸시.
- PR 생성: B가 PR을 열어 A에게 코드 리뷰를 요청.
- 리뷰 및 병합: A가 PR을 확인하고, 문제 없으면 병합.
- 업데이트: B와 A 모두 로컬 저장소를 최신 상태로 업데이트.
두 명의 개발자 A와 B가 있어요 👻
GitHub에서 협업하는 프로젝트가 있다고 해요
그 협업 과정에 대해서 알아볼까요?
1️⃣ GitHub Repository 생성
- 먼저, A가 GitHub에서 새 프로젝트를 시작한다고 가정할게요
- GitHub에서 새로운 repository를 생성하고, 프로젝트에 필요한 기본적인 파일(예: README.md, .gitignore 등)을 추가합니다.
① GitHub에 들어가서「Repositories」 를 클릭해주세요!
② 그러면 초록색으로 New가 뜰 거예요. 눌러주세요!
③ 「Repository name」에서 이름을 정해주세요
④ Public로 하셔도 되고 Private로 하셔도 됩니다. 저는 Public로 할게요
⑤ 「Add a README file」 을 눌러서 함께 생성해줄게요
⑥ 「Add .gitignore」에서 현재 쓰고 있는 언어를 찾아서 설정해주세요. 저는 Python을 쓰기 때문에 Python으로 했어요
⑦ 「Create repository」를 눌러주시면 생성 완료!
2️⃣ Collaborator 초대
① 이제 B를 프로젝트에 참여하도록 초대할 거예요
② 「Settings」에 들어가주세요
③ 「Collaborators」 섹션에서 B의 GitHub 아이디를 추가해주세요
④ 그렇게 되면 B의 📬이메일로 메시지를 받게 되고, 이를 수락하면 같은 repository에서 협업할 수 있게 돼요
3️⃣ 로컬 저장소 클론 (Clone)
① 이제 B는 GitHub에서 A가 만든 repository를 로컬 컴퓨터로 클론(clone)하여 작업을 시작해야 해요
② Repository에서 「<> Code」 버튼을 누르시면 해당 주소가 보일 거예요. 복사해주세요
# bash
git clone https://github.com/username/repository-name.git
③ 터미널을 켜서 로컬 컴퓨터에 클론(clone) 해줄게요
# desktop으로 가기
~ % cd desktop
Cloning into 'Project'...
remote: Enumerating objects: 4, done.
remote: Counting objects: 100% (4/4), done.
remote: Compressing objects: 100% (3/3), done.
remote: Total 4 (delta 0), reused 0 (delta 0), pack-reused 0 (from 0)
Receiving objects: 100% (4/4), done.
④ 이렇게 되면 바탕화면에 폴더가 생성돼 있을 거예요
4️⃣ 새로운 브랜치 생성 및 작업
① 협업 시, 보통 메인 브랜치(main/master)에서 바로 작업하지 않고, 각자 작업할 브랜치를 만들어서 써요
② 이제, B는 새로운 브랜치를 생성하고 그 브랜치에서 작업을 시작해요
# 브랜치 생성
## git swith -c branch_name
git swith -c A_branch
③ B는 이 브랜치에서 코드를 수정하거나 새로운 기능을 개발할 수 있게 돼요
5️⃣ 로컬 변경 사항 커밋
▲ 왼쪽 하단을 보면 지금 main에 있는지, branch에 있는지 확인 가능해요
git add file_name
git commit -m "A comment"
① 작업이 끝난 후, B는 변경된 파일들을 Git에 추가하고 commit 해요
6️⃣ 원격 저장소에 푸시 (Push)
① 변경 사항을 로컬에서 커밋한 후, B는 해당 브랜치를 GitHub의 원격 저장소에 푸시(push) 해요
git push origin branch name
$ git push origin A_branch
Enumerating objects: 6, done.
Counting objects: 100% (6/6), done.
Delta compression using up to 8 threads
Compressing objects: 100% (4/4), done.
Writing objects: 100% (5/5), 538 bytes | 538.00 KiB/s, done.
Total 5 (delta 1), reused 0 (delta 0), pack-reused 0
remote: Resolving deltas: 100% (1/1), done.
remote:
remote: Create a pull request for 'A_branch' on GitHub by visiting:
remote: https://github.com/minkyungbae/Project/pull/new/A_branch
remote:
To https://github.com/minkyungbae/Project.git
* [new branch] A_branch -> A_branch
이렇게 결과창이 우르르 나온다면 된 거예요
7️⃣ 풀 리퀘스트 (Pull Request, PR) 생성
① B가 작업한 브랜치를 GitHub에서 A에게 머지(Merge)하라고 요청하기 위해 **Pull Request(PR)**를 생성해요
② 「Compare & pull request」버튼을 눌러도 되고, 상단에 「Pull requests」 버튼을 눌러서 PR을 생성할게요
③ PR을 작성할 때, 어떤 변경을 했는지 간단한 설명을 추가하는 것이 좋아요
8️⃣ A의 리뷰 및 피드백
① A는 PR을 열어 B가 작성한 코드를 확인해요
② 코드에 문제가 없으면 PR을 승인하고, A_branch를 main 브랜치에 병합할게요
(코드에 문제가 있으면 피드백을 남기고, B는 다시 해당 부분을 수정한 후 PR을 업데이트하면 돼요)
9️⃣ 브랜치 병합 (Merge)
① A가 PR을 승인하고, 병합(Merge)을 클릭하면, B의 작업이 main 브랜치에 반영돼요
▲ 클릭!
▲ 클릭하면 merge 돼요
🔟 협업 종료 후 로컬 업데이트
① 이제 A, B 모두 최신 자료를 GitHub에서 로컬로 받아와야 해요
② A, B 모두 최신 파일로 관리하는 것이 중요해요
git switch main # main으로 가기
git pull origin main # GitHub main에 있는 최신 자료 받아오기
‼ 충돌은 얼마든지 발생할 수 있는 것이니, 당황하지 않고 VSCode처럼 로컬에서 해결 후 push 해주시면 됩니다 !!