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