220603 Github Contribution 하는 방법

시에나 Sienna·2022년 6월 3일

1. Fork

  1. 오른쪽 상단에 ‘Fork’버튼을 클릭한다
  1. 어느 곳으로 fork할지 선택한다.
    - ① 본인 github user_name을 선택
    - ② Create fork 버튼 클릭
  1. 자신이 선택한 GitHub에 fork한 repository(원본 저장소)가 생성된 것을 알 수 있다.

    • fork했던 repository와 비교
  2. 위의 페이지에서 초록색 Code 버튼을 클릭하여 현재의 GitHub Repository 주소를 클릭하여 복사한다.

  1. Shell 또는 터미널에 아래의 코드를 입력한다.
git clone 복사한 주소

# 예시
git clone https://github.com/thwjd639/HipID.git
  • Colab에서 실행한 다면 아래와 같이 “!”를 붙이고 실행한다.
!git clone 복사한 주소 # ! 확인
# 예시
!git clone https://github.com/thwjd639/PythonMasterTeam1.git
  1. git upload 한다.

(공통)

git config --global user.email "(이메일 주소)"
git config --global user.name "(github id)"

# Github에 올리가조하는 파일의 상위 폴더로 이동 
git init
git add .
git commit -m "(메세지 적기)"

(일반적인 자신의 github에 upload 할 때)

git remote add origin (github 주소)
git push origin main

(branch 변경하여 upload 할 때)

git branch branch_name # branch 생성
git branch -a # branch 모두 확인
git switch branch_name  # 생성한 branch로 전환

git remote add origin (github 주소)
git push origin branch_name
  • branch를 switch한 결과, 현재 지정된 branch name(moonsso) 초록색으로 색이 바뀌고 앞에 별표시(*) 확인
  • Colab의 경우
    • 파일 > GitHub에 사본저장 클릭하여 아래와 같은 창이 뜨면, 저장소 “user_name/PythonMasterTeam1” 선택하고 확인 버튼을 누른다.

  • 완료 화면 (각 폴더명(ex. 문소정)으로 들어간 상태는 아님)

2. Pull Request

  1. ‘PythonMasteTeam1’ Repository(원본 저장소)로 가면 아래와 같은 배너가 뜨고,
    여기서 contribute를 클릭 → Open pull request 클릭


  1. 아래의 화면이 보이면 Create pull request 클릭

  • pull request 결과

3. Fork한 Repository 최신으로 동기화하기(중요) (자신의 GitHub!!!에서)

1) GitHub에서 Fetch and merge하기

그리고 변경된 내용이 한 군데에 모이다 보니까

Upstream 저장소의 변경 된 내용을 본인의 저장소로 업데이트하는 것이 중요합니다!!

이때 업데이트를 github에서 쉽게 하실 수 있는 방법이 있습니다.

변경된 내용이 있다면 Fetch and merge 버튼이 활성화 될 것입니다.

이 버튼을 누르시면 자신의 repo에 업데이트가 됩니다.

그 후 local에서 pull을 하시면 완성입니다!!

2) terminal에서 upstream 하기

# 현재 설정된 원격 주소 조회
git remote -v
> origin  https://github.com/YOUR_USERNAME/YOUR_FORK.git (fetch)
> origin  https://github.com/YOUR_USERNAME/YOUR_FORK.git (push)

# 원본 저장소 추가
git remote add upstream (원본 저장소)

# 재 확인
git remote -v
> origin    https://github.com/YOUR_USERNAME/YOUR_FORK.git (fetch)
> origin    https://github.com/YOUR_USERNAME/YOUR_FORK.git (push)
> upstream  https://github.com/ORIGINAL_OWNER/ORIGINAL_REPOSITORY.git (fetch)
> upstream  https://github.com/ORIGINAL_OWNER/ORIGINAL_REPOSITORY.git (push)

# 최신 업데이트 가져오기, upstream repository의 내용 불러오기
git fetch upstream

# 원본 저장소 local의 main branch merge
git switch main
git merge upstream/main

# local의 변화내용을 원격(remote) 저장소에도 동기화
git push origin main

Q : 두 방식의 차이는 뭘까?🤔

4. Merge

Merge는 관리자 기능이므로 어떻게 Pull Request가 반영되는지 보여드리겠습니다.

PR(Rull Request)을 받은 원본 저장소 관리자는 코드 변경내역을 확인하고 Merge 여부를 결정합니다.

최종적으로 Merge를 확인합니다.

merge가 되면 PR(Pull Request)가 완료되어 아래의 사진처럼 closed 됩니다.

끝!!


참고자료

추가 읽어볼 자료

0개의 댓글