Git은 개발자들 사이에서 개인 혹은 팀 간의 프로젝트를 관리하는 데 가장 널리 사용되고 있는 툴이다. 이 Git 프로그램을 활용하면 프로젝트 기록을 스스로 관리하며 프로젝트 생성 및 복구, 삭제, 병합 등을 할 수 있는데, 이때 이 Git 시스템을 통해 관리하는 프로젝트들을 올려둘 수 있는 호스팅 서비스 중 하나이자, 가장 대표적인 서비스가 바로 GitHub이다.
Git 저장소(Repository)는 Git이 버전 관리를 하고 있는 폴더를 의미한다. Git Repository에는 파일이 변경이력에 따라 구분되어 저장되며, 위치에 따라 Github 서버와 같은 원격 저장소(Remote Repository)와 개인 pc의 로컬 저장소(Local Repository)로 구분된다.
이에, 사용자는 1) Workspace에서 작성된 파일을 원격 저장소에 올리고, 2) 반대로 다른 사용자에 의해 수정된 파일을 원격 저장소에서 Workspace로 받아올 수 있다.
지난 포스팅인 Push는, 1) 에 해당된다. 이번 Pull은 반대의 경우인 2) 에 해당하는 내용이 되겠다.
편의상 로컬 머신에 존재하는 모든 Repository는 Local이고 GitHub에 존재하는 모든 Repository는 Remote라고 해보자.
우선 로컬에 Repository를 만드는 방법은 크게 두 가지가 있다.
git init
으로 새로운 Git Repository 생성git clone
해서 가져오기이렇게 만든 Local과 Remote는 모두 그 자체로 완전한 버전 관리 시스템이다. 그래서 Local과 Remote의 작업 내용을 서로 반영하기 위해 Push와 Pull이라는 작업을 하게 된다.
따라서,
push
는 Local -> Remote로 Commit 이력을 업로드하는 것이고,
pull
은 Remote -> Local로 Commit 이력을 다운로드하는 것이다.
Fetch
, Pull
, Clone
fetch
Remote repository에 있는 프로젝트의 변경 사항을 가져오기만 하는 것.
다른 사람이 수정한 부분을 확인한 뒤에merge
(병합)할 수 있다는 장점이 있다.
pull
Remote repository에 있는 프로젝트의 변경 사항을 가져와 자동으로merge
(병합)까지 하는 것.
변경 사항을 가져옴과 동시에 자동으로 병합까지 되기 때문에 무엇이 추가되었는지 확인이 힘들고, 충돌 문제가 일어나기 쉽다.
👉pull
=fetch
+merge
clone
Remote repository에 있는 내용을 새로운 폴더에 그대로 복사하는 것.
pull
은fetch
와merge
의 과정을 포함하고 있는 것이기에fetch
이후merge
를 수행하면pull
명령과 동일한 수행 내역이 되는 것이다.
pull
은 Remote repository가 Local에 비해 더 최신 커밋이 존재할 때만 내려받도록 하는게 좋다.
fetch
은 Remote와 Local의 변경 사항이 다를때, 이를 비교 및 대조하는 확인 작업이 필요할때 사용한다.
merge
을 통해 최신 커밋 내역을 반영하거나 충돌 문제를 해결할 수 있다.2024/01/05 )
원격 저장소의 변경사항들을 로컬저장소로 가져오기 전 변경 내용을 확인하고 싶은 경우에 사용하는 명령어이나,
https://velog.io/@devp1023/GIT-Fetch
이곳의 포스팅을 참고하여 터미널로 시도해보려 하니 어렵다. 좀 더 해봐야 할 듯 싶음. 아직 지식이 부족한 느낌이다.
추후 다시 수정 예정.