본문 바로가기

Programming/Git

[Git]Gitlab(4) - 소스 내려 받기(git clone, git pull)

안녕하세요. 잇킹 시도르입니다.

이전 포스트에서 깃랩에 소스 올리기를 했으니, 이제 소스 내려받기를 해보겠습니다.

 

깃랩 소스 최초 내려받기

프로젝트에 처음 투입돼서 현재 원격 저장소의 소스를 내려받아야겠죠?

 

1. 깃랩 소스를 내려받을 신규 폴더를 생성하고 파이참으로 열겠습니다.

▲신규 폴더 생성

 

▲파이참에서 해당 폴더 오픈

 

2. 깃랩에서 원하는 프로젝트나 레포지터리 화면에서 캡처와 같은 Clone 버튼을 눌러줍니다.

▲깃랩 Project 화면

 

하위의 SSH나 HTTPS의 Copy URL을 하겠습니다. SSH-Key를 기존에 등록했으니, SSH-URL을 복사하겠습니다.

▲깃랩 Clone 하위 메뉴

 

3. 이제 깃랩 프로젝트의 폴더를 내려받겠습니다. 해당 명령어를 통해서 진행됩니다.

git clone 복사한 저장소의 URL
원격 저장소를 복제하는 기능
D:\My_DEV\py_prj\git_receive>git clone git@gitlab.com:sichul_park/p_myself.git
Cloning into 'p_myself'...
remote: Enumerating objects: 12, done.
remote: Counting objects: 100% (12/12), done.
remote: Compressing objects: 100% (8/8), done.
remote: Total 12 (delta 0), reused 0 (delta 0), pack-reused 0
Receiving objects: 100% (12/12), done.

 

프로젝트에서 해당 폴더가 생성된 것을 볼 수 있습니다.

 

폴더로 이동 후 git log를 보니 프로젝트 히스토리까지 정상적으로 보이네요.

git log : git의 커밋 이력을 보여주는 명령어입니다.
D:\My_DEV\py_prj\git_receive>cd p_myself

D:\My_DEV\py_prj\git_receive\p_myself>git log
commit f302c4bef33d05a44dde98668f5474604b1dcc39 (HEAD -> master, origin/master, origin/HEAD)
Author: Sichul Park <parksichul3593@gmail.com>
Date:   Fri Apr 3 14:43:35 2020 +0900

    first commit

D:\My_DEV\py_prj\git_receive\p_myself>

 

지금까지 작업한 소스를 깃랩에 업로드도 진행하겠습니다.

 

※소스 업로드는 이전 포스트를 참고해주시면 되겠습니다.

2020/04/03 - [Programming/Git] - [Git]Gitlab(3) - 소스 올리기

 

[Git]Gitlab(3) - 소스 올리기

안녕하세요. 잇킹 시도르입니다. 이제 깃랩 ssh 연동까지 완료했고, 작업한 소스들을 이제 올려 봐야겠죠? 저는 파이참과 같은 IDE의 기능이 아닌 터미널 창에서 직접 사용하려고 합니다. CLI를 사용하는 프로젝트..

sidorl.tistory.com

정상적으로 깃랩에 업로드된 것까지 확인했습니다.

▲추가 작업이 반영된 깃랩 저장소

 

작업한 깃랩 소스 내려받기

git_receive 프로젝트를 개발자 B라고 하겠습니다. 개발자 B는 test2.py를 수정하고 test3.py를 신규로 만들었습니다. 그 내용까지 깃랩에 반영된 거죠. 

 

이제 개발자 A가 작업을 시작하려고 합니다. 개발자 A의 커밋은 test1과 변경 이전의 test2 상태입니다.

 

개발자 A는 깃랩에 반영된 소스를 자기 로컬에 반영한 후에 작업을 시작해야 됩니다. 그런데 실제 반영된 소스가 있는지 매번 깃랩에 들어가고 앞 단계처럼 클론을 통해 복제를 반복하는 과정은 해야한다면 번거롭겠죠?

 

깃랩에 들어가지 않고, 깃랩 저장소의 커밋과 자신의 로컬 커밋 상태를 비교하고자 할 때 사용하는 명령어가 있습니다.

git fetch : 원격 저장소의 커밋 정보를 가져오는 명령어

git fetch를 통해 원격 저장소의 커밋 정보를 가져오고, git status를 통해 로컬 저장소의 커밋 상태와 비교해볼 수 있습니다. 해당 명령어를 실행해보겠습니다.

(sidorl) D:\My_DEV\py_prj\git_test>git fetch
remote: Enumerating objects: 6, done.
remote: Counting objects: 100% (6/6), done.
remote: Compressing objects: 100% (2/2), done.
remote: Total 4 (delta 0), reused 0 (delta 0), pack-reused 0
Unpacking objects: 100% (4/4), 372 bytes | 10.00 KiB/s, done.
From gitlab.com:sichul_park/p_myself
   f302c4b..295a1cc  master     -> origin/master

(sidorl) D:\My_DEV\py_prj\git_test>git status
On branch master
Your branch is behind 'origin/master' by 1 commit, and can be fast-forwarded.
  (use "git pull" to update your local branch)

Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git restore <file>..." to discard changes in working directory)
        modified:   test1.py

no changes added to commit (use "git add" and/or "git commit -a")

 

git status를 실행해보니, 원격 저장소의 커밋보다 1개가 뒤져있다고 나옵니다. 그리고 git pull 명령어를 통해 자신의 로컬 브랜치를 업데이트하라고 하네요. 이제 git pull 명령어로 원격 저장소의 소스를 내려받겠습니다.

git pull 원격저장소명 브랜치명 : 해당 저장소 브랜치의 소스를 내려받는 명령어입니다.

명령어를 실행시켜보겠습니다.

(sidorl) D:\My_DEV\py_prj\git_test>git pull origin master
From gitlab.com:sichul_park/p_myself
 * branch            master     -> FETCH_HEAD
Updating f302c4b..295a1cc
Fast-forward
 test2.py | 3 ++-
 test3.py | 1 +
 2 files changed, 3 insertions(+), 1 deletion(-)
 create mode 100644 test3.py

 

개발자 B가 깃랩에 커밋했던 소스가 반영된 것을 확인할 수 있습니다.

 

항상 작업을 하기 이전에 습관적으로 pull로 동료들이 반영한 소스를 내려받고 시작하는 습관을 가지는 게 좋겠네요. 

이상입니다!!!