본문 바로가기
# Tools/- Git

GitHub 사용법 3편 : GitHub에서 프로젝트 가져오기

by Graffitio 2023. 8. 23.
GitHub 사용법 3편 : GitHub에서 프로젝트 가져오기
728x90
반응형
[기본 개념]

 

※  git pull = git fetch + git merge

      ▶ pull과 fetch의 차이점 : 병합의 유무

 

 

pull

 

$ git pull <remote_repository_name> <branch_name>

 

'git pull' 명령은 원격 저장소의 변경 내용을 로컬 저장소로 가져와 병합하는 과정을 단일 명령으로 수행한다.

실제로는 'git fetch' 와 'git merge'를 순차적으로 실행하는 것과 같음.

 

한 방에 해결하기 때문에 간편하긴 하지만,

  ▶ 병합 작업 중 충돌이 발생할 경우,

       자동으로 병합이 실패하고 수동으로 충돌을 해결해야 함.

  ▶ 변경 사항을 가져옴과 동시에 자동으로 병합이 되기 때문에

       무엇이 추가되고 병합되었는지 확인이 안 된다.

 

git clone과의 차이점

  ▶ git clone

      : 원격 저장소를 처음부터 전체적으로 가져와서 로컬에 복제하는 작업

        즉, 해당 repository를 통째로 다운받는 개념으로,

        내 PC에 해당 프로젝트 폴더를 새로 생성

  ▶ git pull

       : 이미 로컬에 복제된 저장소에서 변경 내용을 가져오는 작업

         원격 저장소의 변경 내용을 로컬로 다운로드(fetch)하여

         현재 작업 중인 branch에 자동으로 병합(merge)한다.

        

 


 

fetch

 

$ git fetch <remote_repository_name>

 

'git fet' 명령은 원격 저장소의 변경 내용을 가져오는 명령으로,

로컬 저장소에 해당 원격 저장소의 변경 내용을 다운로드하여 업데이트한다.

그러나 현재 작업 중인 브랜치에는 적용 안 됨.

단순히 원격 저장소의 변경 내용을 로컬 저장소에 반영하는 기능을 한다.

  cf) 가져온 변경 사항을 확인하려면, 'git log' 명령어를 사용하여 로그를 조회하면 된다.

 


 

merge

 

$ git merge <other_branch_name>

 

'git merge' 명령은 서로 다른 브랜치의 변경 내용을 병합하는 작업을 수행하며,

주로 로컬에서 작업 중인 브랜치에 다른 브랜치의 변경 내용을 통합할 때 사용한다.

 

주의할 점은 병합 작업 중에 충돌이 발생할 수 있다는 것이다.

충돌이 발생하면 수동으로 충돌을 해결해야 하고,

'git commit'으로 충돌 해결 내용을 커밋해야 한다.

 


Fork

 

1. Fork란?

Fork : 다른 사용자의 프로젝트를 자신의 계정으로 복제하는 것.

만약 다른 사용자의 프로젝트를 가져와야할 경우,

해당 계정의 GitHub 페이지에서 프로젝트를 Fork하여 내 계정으로 가져와야 한다.

Fork한 프로젝트는 원본 프로젝트와 독립적으로 존재하며,

이후에는 독립적으로 관리되거나 수정될 수 있다.

 

2. Fork 하는법

    ① GitHub 계정 로그인

    ② 원본 프로젝트 접속

         : Fork하고자 하는 원본 프로젝트의 GitHub 페이지로 이동한다.

    ③ Fork 버튼 클릭

         : 원본 프로젝트 페이지 우측 상단에 "Fork" 버튼을 클릭

           이를 통해 원본 프로젝트의 복사본이 자신의 계정으로 Fork된다.

     ④ 자신의 계정에 Fork된 프로젝트 접속

 

 


 

[GitHub에서 코드 가져오기]

 

 

프로젝트를 받아와서 수정한 뒤 다시 업로드하는 과정은 다음과 같다.

Fork ▶ clone ▶ 수정 ▶ commit ▶ pull(fetch+merge) ▶ push ▶ Pull request

 


 

Sequence

 

1. Project Fork

 

    GitHub에서 원본 프로젝트를 Fork하여 자신의 계정에 복제한다.

 

2. Local에 clone

$ git clone <자신의_프로젝트_url>
$ cd <프로젝트_폴더>

 

    자신의 GitHub 계정에 Fork한 프로젝트를 로컬 환경으로 클론하여

    Local Repository에 프로젝트의 복사본을 생성하고 해당 폴더로 이동

 

3. 수정 작업

 

    프로젝트 파일을 수정하고 원하는 변경을 진행한다.

    이 때, 작업한 내용은 Local Commit으로 관리된다.

 

4. Local에서 Commit

git add <변경된 파일들>
// 또는 git add .
git commit -m "수정 작업에 대한 설명"

 

    변경된 내용을 스테이징(staging)하고 Commit한다.

    이러한 커밋은 Local Repository에 저장된다.

 

5. 원본 프로젝트와 동기화(선택 사항)

 // 원본 프로젝트의 url을 'upstream'이라는 이름으로 원격 저장소에 추가
$ git remote add upstream <원본_프로젝트_url>

// 'upstream' 원격 저장소에서 변경 내용을 가져온다.
$ git fetch upstream

// 'upstream/main' 브랜치로부터 가져온 내용을 현재 브랜치에 병합
$ git merge upstream/main

 

    원본 프로젝트에 변경 사항이 있을 경우, 이를 자신의 로컬 프로젝트로 가져와 동기화한다.

 

6. GitHub로 push

git push origin <브랜치_이름>

 

    수정한 내용을 자신의 GitHub 계정의 Fork한 프로젝트에 업로드한다.

 

    cf) 동기화할 때랑 push할 때,

         서로 부르는 원격 저장소 이름이 달라도 되는가?

         달라도 상관없다.

         이들은 단지 원격 저장소를 식별하기 위한 이름(alias)일 뿐이며,

         보통 upstream은 원본 프로젝트를 가리키는 원격 저장소 이름,

         origin은 본인의 GtHub 계정에 있는 프로젝트를 가리키는 원격 저장소 이름

         으로 많이 사용되고 원하는 별명을 붙여줘도 상관없다.   

 

 

7. Pull Request 생성

 

GitHub 웹 인터페이스에서 Fork한 프로젝트로 이동하여 Pull Request를 생성하면,

원본 프로젝트 소유자에게 수정 내용을 리뷰하고 병합해달라 요청할 수 있다.

 

이제 원본 프로젝트 소유자는 Pull Request를 검토하고 변경 내용을 확인한 후,

필요하다면 수정을 요청하거나 병합할 수 있고, 이를 통해 협업하면서

프로젝트를 수정하고 공유할 수 있다. 

728x90
반응형