Language

[Git] git clone/pull/fetch

jihuSunbae 2024. 11. 17. 20:48

 

 

 

 

 
 

목차


    학습 목표

    - 프로젝트에서 언제 git pull과 git clone을 써야할지 안다. 

    - git fetch와 git pull의 차이를 안다. 


    git clone 

    git clone [원격저장소URL] # url 형식: git clone https://github.com/username/repo.git
    • 원격 저장소 내용을 그대로 내 로컬 저장소에 복사한다. 
    • 언제 사용해야하는가? 프로젝트를 시작할 때
      • clone을 받으면, 내 로컬 저장소에 자동으로 내 소유의 원격 레포가 origin으로 등록된다!

     

    git pull(fetch+merge)

    : 원격 저장소[remote] 의 변경 내용을 나의 브랜치[branch]에 반영한다. 

    git pull [원격저장소] [로컬저장소]
    • 정의: 원격저장소의 내용을 로컬 저장소에 반영하되, 나의 브랜치의 내용도 반영한다. -> 병합(merge)!
    • 언제 사용해야하는가? 프로젝트 중, 팀원들의 코드 변경 사항을 내 레포 브랜치에 반영해야할 때
    • 유의점: 내 브랜치 내용과 원격 저장소에서 pull 받은 내용의 차이가 있다면 충돌이 발생할 수 있다. 



    git fetch

    $ git fetch [remote]
    • 기능: 원격저장소의 데이터를 가져와서 임시저장한다! 로컬 브랜치에 반영하지는 않는다(cf. git pull). 
      • 임시 브랜치를 만들어서 변경 사항을 저장한다. 
    • 언제 사용하는가? 원격 저장소를 로컬에 pull 하기 전에, 변경사항이 있는지 확인하는 용도
    • 유의점: 데이터를 로컬 브랜치에 병합하지 않는다. 로컬 브랜치에 반영하고 싶다면, git merge를 해야한다. 

     

    실행 결과에는 어떤 브랜치에 어떤 변경 사항이 있는지 확인해준다. 

    remote: Enumerating objects: 10, done.
    remote: Counting objects: 100% (10/10), done.
    remote: Compressing objects: 100% (5/5), done.
    remote: Total 10 (delta 3), reused 7 (delta 2), pack-reused 0
    From https://github.com/username/repo
       2e3f8d9..6c9a2a1  main       -> origin/main
       9b8a7d1..7f4b8d2  feature-1 -> origin/feature-1

     

     

     

    주요 구문은 이거다. 

     

    2e3f8d9..6c9a2a1  main       -> origin/main
    9b8a7d1..7f4b8d2  feature-1 -> origin/feature-1

     

    main과 feature-1가 업데이트 되었으며, 2e3f8d9, 6c9a2a1와 같이 숫자와 문자로 이뤄진 커밋해시 번호들이 기재되어 있다. 

    • main 브랜치: 로컬(2e3f8d9) ... 원격 저장소(6c9a2a1)가 차이가 있음. 
    • feature-1 브랜치: 로컬(9b8a7d1) ... 원격 저장소(7f4b8d2)가 차이가 있음. 

     

     

     

    git clone vs git fetch

      git clone git pull  git fetch
    정의 로컬 브랜치에 원격 저장소의 복사본 생성 로컬 브랜치에 원격 저장소 변경 사항 반영 원격 저장소의 변경 사항 업데이트
    사용 시점 프로젝트 시작 시  이미 Clone한 저장소에서 최신 상태로 동기화할 때 이미 Clone한 저장소에서 최신 상태로 동기화할 때
    동작 범위 저장소 전체 (코드, 히스토리, 브랜치 등 모두 복사) 원격 저장소 변경 사항  원격 저장소 변경 사항 
    로컬 브랜치 병합 여부 X O X
    로컬 브랜치 영향 O O X

     


     

    Reference

    https://hwon-da.tistory.com/34

    https://velog.io/@devp1023/GIT-Fetch

     

    [GIT] Fetch (커밋 정보 가져오기)

    fetch 기능은 git의 pull과 어느정도 비슷한 부분이 있어요.pull은 원격 저장소의 내용을 가져와서 로컬 저장소에 복사하는 기능이라면,fetch는 원격 저장소에 변경된 내용만 가져와서 확인할 수 있게

    velog.io

     

     

    git remote add upstream "포킹한 레포지토리의 url"

     

    • git checkout main



     

    https://velog.io/@msung99/Git-fetch-upstream-Fork-%EC%A0%80%EC%9E%A5%EC%86%8C%EC%99%80-%EB%8F%99%EA%B8%B0%ED%99%94%EB%A5%BC-%EC%8B%9C%ED%82%A4%EC%9E%90