콘텐츠로 이동

Git 첫걸음

Git 사용을 위해 기초적인 환경 설정과 사용방법을 배운다.

실습 안내

  • 이번 챕터는 실습과 함께 진행 됩니다.
  • 교재 내용을 따라가면서 실습으로 표시된 부분을 함께 진행 하도록 합니다.
  • 맥은 터미널, 윈도우는 Git Bash를 사용합니다.

용어 정리

git을 사용하기 위해 기본적으로 알아야 하는 용어를 먼저 정리한다. 모든 용어를 살펴볼수는 없고 처음 시작하는 과정에 먼저 알아야 이후 학습이나 실습진행에 문제가 없을 핵심 용어 위주로 살펴본다.

git 용어 정리

각각의 용어들은 추후 해당 내용을 자세히 배우면서 추가적으로 설명될 것이므로 지금 단계에서 너무 자세히 이해하려하지 말고 전체적인 흐름과 개념 위주로 이해하도록 한다.

용어 설명
Repository 프로젝트의 파일과 변경 이력을 저장하는 데이터베이스. 프로젝트 폴더.
Working Directory 사용자가 작업하는 현재 디렉토리.
Staging Area 커밋할 파일들을 임시로 저장하는 영역. 눈에 보이는 것은 아니고 내부적으로 관리됨.
Commit 변경 사항을 저장소에 기록하는 작업.
Branch 독립적으로 작업을 진행할 수 있는 일종의 복사된 작업 영역.
Merge 여러 브랜치의 변경 사항을 하나로 합치는 작업.
Checkout 특정 브랜치나 커밋으로 작업 디렉토리를 전환하는 작업.
Remote 원격 저장소를 가리키는 이름.
Clone 원격 저장소를 복제하여 로컬 저장소를 생성하는 작업.
Pull 원격 저장소의 변경 사항을 가져와 로컬 저장소에 병합하는 작업.
Push 로컬 저장소의 변경 사항을 원격 저장소에 업로드하는 작업.
Fetch 원격 저장소의 변경 사항을 가져와 로컬 저장소에 반영하지 않고 저장하는 작업.
Conflict 병합할 때 발생하는 충돌. 동일한 파일의 동일한 부분이 수정된 경우 발생.
HEAD 현재 체크아웃된 브랜치를 가리키는 포인터.

워킹 디렉토리의 파일들은 다음과 같이 3가지 상태로 나눌 수 있다.

상태 설명
Untracked git이 추적하지 않는 상태. 새로 생성된 파일이나 변경된 파일.
Unmodified git이 추적하고 있는 상태이지만 변경사항이 없는 상태. git add를 통해 추가된 이후.
Modified git이 추적하고 있는 상태이지만 변경사항이 있는 상태.
Staged git이 추적하고 있는 상태. 커밋할 준비가 된 상태.

Sponsored

로컬 저장소 생성

폴더 만들기

기본적으로 git 은 폴더 단위로 관리를 한다. 자바, 웹, 파이썬 등 어떤 프로젝트든 상관없이 폴더를 생성하고 그 안에서 git을 사용할 수 있다.

여기서는 실습을 위해 단순히 파일로만 구성되는 폴더를 만들고 그 안에서 git을 사용할 계획이다. 다음과 같이 터미널에서 폴더를 생성한다. 물론 윈도우 탐색기에서도 폴더 생성이 가능하지만 여기서는 CLI를 사용한다.

윈도우 사용자 주의 사항

  • 2장에서 언급한 것 처럼 윈도우에서는 Git Bash를 사용합니다.
  • cmd나 powershell에서는 일부 명령어가 다를 수 있으므로 반드시 Git Bash를 사용하세요.

폴더 생성 위치는 바탕화면(Desktop) 이다.

$ cd ~/Desktop  ## 바탕화면으로 이동
$ mkdir git-start   ## git-start 폴더 생성
$ cd git-start
$ pwd   ## 현재 위치 확인

## 실행결과
맥OS: /Users/사용자이름/Desktop/git-start
윈도우: /c/Users/사용자이름/Desktop/git-start
  • $는 쉘 프롬프트로 사용자 컴퓨터 마다 표현이 다를 수 있다.
  • 쉘 프롬프트 표시 $는 입력하는 것이 아니다. 윈도우는 c:\> 와 같은 형태로 표시될 수 있다.

git 초기화

폴더를 생성했으면 git을 사용하기 위해 초기화를 해야 한다. git 초기화는 현재 프로젝트 폴더에서 git 저장소를 생성하는 것을 말한다.

다음과 같이 git init 명령어를 사용하여 git 저장소를 초기화 한다.

실습: git 초기화
$ git init
[경로명] 안의   저장소를 다시 초기화했습니다

$ ls -la
total 0
drwxr-xr-x  3 edu  staff   96 Mar  4 15:43 .
drwx---rwx@ 4 edu  staff  128 Mar  4 15:36 ..
drwxr-xr-x  9 edu  staff  288 Mar  4 15:44 .git
  • ls -la 명령으로 현재 폴더의 목록을 확인한다.
  • .git 폴더가 생성되어 있는 것을 확인할 수 있다.
  • git 초기화 후 터미널에 따라 쉘프롬프트에 기본 브랜치명인 (master)가 표시되는 경우도 있다.
  • 출력되는 메시지는 운영체제 환경에 따라 한글/영어 등 다르게 표시될 수 있다.

환경설정

git 사용을 위한 기본 설정으로 이름과 이메일 정보를 설정해야 한다. 이 정보는 변경사항을 커밋(기록)을 할 때 작성자 정보로 사용된다.

Tip

  • git 환경설정에 사용되는 이름과 이메일은 특정 서비스(예를 들면 Github)에 가입할 때 사용되는 정보와는 별개이다.
  • git 환경설정은 커밋을 할 때 누가 변경했는지를 기록하는 정보가 된다.

환경설정은 git config 명령어를 사용하여 설정할 수 있다.

로컬 설정과 글로벌 설정

  • 글로벌 설정은 사용자 컴퓨터 전체에 적용되는 설정이다.
  • 컴퓨터를 혼자만 사용하거나 단일 계정만 사용한다면 글로벌 설정을 사용하면 된다.
  • 로컬 설정은 특정 프로젝트(폴더) 단위로 설정하는 것을 말한다.
  • 여러 사용자가 다수의 프로젝트를 하나의 PC에서 사용하는 경우 로컬 설정을 사용하는 것이 좋다.
$ git config --global user.name "사용자이름"
$ git config --global user.email "사용자이메일"
  • --global 옵션을 사용하면 사용자 컴퓨터 전체에 적용되는 설정이 된다.
  • user.name은 사용자 이름, user.email은 사용자 이메일을 설정하는 명령어이다.
  • 폴더 위치와 상관없이 설정이 가능하다.
$ git config user.name "사용자이름"
$ git config user.email "사용자이메일"
  • 로컬 설정은 설정을 원하는 폴더에 들어가서 설정해야 한다.
  • 앞에서 pwd로 git-start 폴더 위치를 확인했다면 그 폴더 안에서 설정을 해야 한다.
  • 프로젝트(폴더)별로 다른 설정이 가능하다.

여기서는 로컬 설정을 사용하여 사용자 이름과 이메일을 설정한다. 터미널에서 현재 위치가 git-start 인지 다시 확인하고 설정 하도록 한다. 만일 다른 디렉토리에 있다면 위치를 이동한 다음 설정을 한다.

실습: 로컬 설정
$ pwd
/Users/사용자이름/Desktop/git-start

$ git config user.name "사용자이름"
$ git config user.email "사용자이메일"

설정이 잘 되었는지 확인하기 위해 설정된 정보를 확인해본다.

실습: 설정 확인
$ git config --list
....
user.name=edu
user.email=edu@albks.com
...
  • 글로벌 설정 확인은 git config --global --list 명령어를 사용한다.

list에서 확인가능한것 처럼 git은 여러 설정 정보를 가지고 있다. 다른 설정들은 필요한 경우 언제든 추가로 설정하면 된다. 다만 처음 git 리파지토리를 생성할 때 기본 브랜치명이 master로 설정되는데 이는 main이라는 명칭으로 변경해 두는 것이 좋다.

원래 git의 기본 브랜치명은 master 이지만 노예와 관련된 부정적인 의미를 가지고 있어서 지금은 main이라는 명칭을 선호하고 있다.

앞에서 git init을 통해 master 브랜치가 생성된 경우라면 다음과 같이 기본 브랜치명을 main으로 변경한다.

실습: 기본 브랜치명 변경
$ git branch -m master main
$ git status
현재 브랜치 main

아직 커밋이 없습니다

커밋할 사항 없음 (파일을 만들거나 복사하고 "git add" 사용하면 추적합니다)
  • master 브랜치명을 main으로 변경
  • git status로 변경 확인

앞으로 모든 git 초기화시 자동으로 main으로 기본 브랜치명을 설정하고 싶다면 다음과 같이 설정한다.

실습: 기본 브랜치명 설정
$ git config --global init.defaultBranch main
$ git config --global --list
...
init.defaultbranch=main
...

Sponsored

git 첫걸음

이제 본격적으로 git을 사용해 보자. git은 다양한 목적이나 전략에 따라 여러 시나리오를 통해 사용이 가능하다. 여기서는 가장 기본이 되는 시나리오를 살펴본다.

시나리오

  1. 파일을 생성한다.(예: README.md, 기존 파일을 복사해 오는것도 가능)
  2. 파일을 git에 추가한다.
  3. 파일을 커밋한다.
  4. 커밋 히스토리를 확인한다.

모든 실습은 git-start 폴더 안에서 진행한다. 만일 다른 위치에 있다면 git-start 폴더로 이동한 다음 실습을 진행한다.

파일 생성/추가

리파지토리에 파일을 추가하는 방법은 워킹 디렉토리에서 직접 파일을 생성하거나 다른곳에서 복사해 오는 방법이 있다. 여기서는 간단하게 파일을 생성하는 방법을 살펴본다.

실습: 1단계-파일 생성
$ touch 1.txt
$ ls
1.txt
  • touch 는 파일을 생성하는 명령어이다.
  • 내용은 비어 있는 파일이 생성된다.
  • ls는 현재 폴더의 파일 목록을 보여준다.

워킹 디렉토리에 파일은 생성되었지만 이 파일은 아직 git 에서 관리하지 않는(Untracked) 상태이다. git 에서 관리하기 위해서는 파일을 스테이징 영역으로 추가해야 한다.

먼저 git status로 상태를 확인 후 git add 명령어로 파일을 스테이징 영역으로 추가한다.

실습: 2단계-Untracked 상태 확인
$ git status
현재 브랜치 main
추적하지 않는 파일:
  (커밋할 사항에 포함하려면 "git add <파일>..." 사용하십시오)
    1.txt

커밋할 사항을 추가하지 않았지만 추적하지 않는 파일이 있습니다 (추적하려면 "git
add" 사용하십시오)
  • 추적하지 않는 파일에 1.txt가 보인다.
  • 설명과 같이 git add 명령어로 스테이징 영역으로 추가할 수 있다.
실습: 3단계-git add
$ git add .
$ git status
현재 브랜치 main

아직 커밋이 없습니다

커밋할 변경 사항:
  (스테이지 해제하려면 "git rm --cached <파일>..." 사용하십시오)
     파일:       1.txt
  • git add . 명령어는 현재 폴더의 모든 파일을 스테이징 영역으로 추가한다.
  • git status 명령어로 현재 상태를 확인한다.
  • file1.txt 파일이 새로 추가되었음을 확인할 수 있다.
  • 설명과 같이 git rm --cached 명령어로 스테이징 영역에서 제거(git add 이전 상태로 복구)할 수 있다.

커밋

이제 파일을 스테이징 영역에 추가했으니 커밋을 할 차례이다. 커밋은 변경 사항을 저장소에 기록하는 작업이다.

실습: 4단계-커밋
$ git commit -m "1.txt 추가"
[main (최상위-커밋) 6b8cc39] 1.txt 추가
 1 file changed, 0 insertions(+), 0 deletions(-)
 create mode 100644 1.txt
  • -m 옵션이 없으면 커밋 메시지를 작성하는 편집기가 열린다.
  • vim/nano 계열 편집기로 사용법은 여기 를 참고한다.

맥OS 터미널에서 커밋 메시지 한글

  • 맥OS의 경우 locale 설정에 따라 git log시 한글 메시지가 깨져 보일수 있다.
  • 이럴 경우 다음과 같이 설정을 변경하면 한글 메시지가 정상적으로 보인다.
  • vim ~/.zshrc으로 파일을 열고 마지막 라인에 다음을 추가한다.
    $ export LC_ALL=ko_KR.UTF-8
    
  • vim에서의 저장은 :wq 로 한다.

이번에는 1.txt 파일에 내용을 작성하고 커밋을 해본다. 파일 수정은 운영체제에서 제공하는 텍스트 에디터를 사용하거나 터미널에서 사용하는 에디터를 사용할 수 있다. 파일에 다음과 같은 내용을 첫번째 줄에 추가하고 저장한다.

실습: 1.txt 파일 내용 추가
hello
  • 파일 수정이 어렵다면 터미널 상태에서 다음과 같이 echo 명령어로 내용을 추가할 수도 있다.
  • $ echo "hello" >> 1.txt

파일이 수정되었으므로 수정된 정보를 다시 스테이징 영역으로 추가하고 커밋한다.

실습: 1.txt 파일 수정
$ git add .
$ git commit -m "1.txt 수정"
[main 178dc10] 1.txt 수정
 1 file changed, 1 insertion(+)
  • 이미 git에 추가된 상태에서 변경만 발생한 것이므로 다음과 같이 add/commit을 한번에 수행할 수 있다.
  • $ git commit -am "1.txt 수정"

커밋 히스토리를 확인하는 방법은 git log 명령어를 사용한다.

실습: 커밋 히스토리 확인
$ git log

commit 178dc106c3daf2c304ae10ddf99e3f44cac5d48d (HEAD -> main)
Author: edu <edu@albks.com>
Date:   Wed Mar 5 22:22:35 2025 +0900

    1.txt 수정

commit 6b8cc3971ef6fbf0fd133ebb5a389cc24243d218
Author: edu <edu@albks.com>
Date:   Wed Mar 5 22:18:43 2025 +0900

    1.txt 추가
:q -> q를 눌러야 종료됨. 내용이 길경우 스페이스로 다음 페이지로 이동.
  • commit 178dc... 숫자는 커밋 해시값으로 해당 커밋에 대한 고유 번호라고 생각하면 된다.
  • 만일 커밋을 되돌리거나 특정 커밋으로 이동할 때 사용할 수 있다.
  • HEAD -> main 은 마지막 커밋의 HEAD가 main 브랜치에 있다는 것을 의미한다.
  • 종료를 위해서는 q 키를 누른다.

커밋은 언제 해야 하나요?

  • 커밋은 변경 사항을 저장하는 것이므로 변경 사항이 있을 때마다 커밋을 하는 것이 좋다.
  • 다만 사소한 수정사항에 대해 모두 커밋을 수행하게 되면 커밋 히스토리가 지저분해 질 수 있으므로 적절한 단위로 커밋을 하는 것이 좋다.
  • 문제 발생시 커밋을 되돌릴 수도 있으므로 이를 고려해 적절한 단위로 커밋을 하는 것이 좋다.
  • 커밋 단위가 너무 크면 문제 발생시 특정 단계로 되돌아가기 어려울 수 있으니 주의 한다.
  • 예: 로그인 모듈 수정, 메인 화면 변경, 카드 결제 오류 처리 등.

커밋 메시지는 어떻게 작성하면 좋을까요?

  • git 공식 커밋 메시지 가이드 라인을 따르는 것이 좋다.
  • 제목과 본문은 한 줄 띄워 분리한다.
  • 제목을 마침표로 끝내지 않는다.
  • 제목과 각 문단의 첫 글자는 대문자로 쓴다.
  • 제목은 명령조로 작성한다.
  • 한 문단은 72글자 이내로 작성한다.
  • 본문에 무엇을 변경했는지, 왜 변경했는지 작성한다.

원격 저장소 연동

이제 로컬 저장소에서 작업한 내용을 원격 저장소에 연동해 보자. 원격 저장소는 여러 사용자가 협업하거나 여러 기기에서 작업할 때 변경 사항을 공유하고 백업하는 역할을 한다.

여기서는 Github를 사용하여 원격 저장소를 생성하고 로컬 저장소와 연동하는 방법을 살펴본다.

원격 저장소와 연동하는 방법은 로컬 리파지토리를 먼저 만들고 연동하는 방법과 원격 리파지토리를 만들고 로컬 리파지토리와 연동하는 방법이 있다. 여기서는 gh cli를 사용하여 원격 리파지토리를 생성하고 연동하는 방법을 살펴본다.

로그인 및 SSH키등록

먼저 터미널에서 gh auth login 명령으로 다음과 같이 질문에 위/아래 화살표로 선택해서 절차에 따라 github에 로그인 한다.

실습: gh auth login
$ gh auth login
? Where do you use GitHub?  [Use arrows to move, type to filter]
> GitHub.com
  Other

? What is your preferred protocol for Git operations on this host?  [Use arrows to move, type to filter]
  HTTPS
> SSH

? Generate a new SSH key to add to your GitHub account? Yes
? Enter a passphrase for your new SSH key (Optional): 입력하지 않음
? Title for your SSH key: edu-cli-key

? How would you like to authenticate GitHub CLI?  [Use arrows to move, type to filter]
> Login with a web browser
  Paste an authentication token

! First copy your one-time code: DEBB-0875
  • 이 단계에서 가장 중요한 부분은 5-11라인 이다.
  • SSH로 선택하고 passphrase 는 입력하지 않는다. 확인 요청에도 마찬가지로 엔터를 친다.
  • title은 깃허브에 여러 SSH 키가 등록되어 있을때 구분하기 위한 용도이다.
  • 임으로 작성하지만 컴퓨터-작업목적등 구분해 놓으면 좋다.

엔터를 치면 자동으로 브라우저가 열리고 github 로그인 페이지가 나타난다. 로그인을 하면 인증 코드 입력란이 나타나는데 터미널에 나타난 코드를 복사하여 붙여넣고 Authorize github 버튼을 클릭하면 로그인이 완료된다.

github 로그인

터미널에 다음과 같이 메시지가 나오면 로그인이 완료된 것이다.

실습: 로그인 완료
 Authentication complete.
- gh config set -h github.com git_protocol ssh
 Configured git protocol
! Authentication credentials saved in plain text
 Uploaded the SSH key to your GitHub account: /Users/XXXX/.ssh/id_ed25519.pub
 Logged in as XXXX

gh auth status 명령어로 언제든 현재 로그인 상태를 확인할 수 있다.

github.com
   Logged in to github.com account XXXX (/Users/XXXX/.config/gh/hosts.yml)
  - Active account: true
  - Git operations protocol: ssh
  - Token: gho_************************************
  - Token scopes: 'admin:public_key', 'gist', 'read:org', 'repo'

원격 저장소 연동

터미널에서 깃허브 로그인이 완료되었다면 gh 명령어로 깃허브에 원격 리파지토리를 생성하고 로컬 리파지토리와 연동한다.

실습: 원격 저장소 연동
$ gh repo create git-start --public --source=. --push

 Created repository XXXX/git-start on GitHub
  https://github.com/XXXX/git-start
 Added remote https://github.com/XXXX/git-start.git
오브젝트 나열하는 중: 6, 완료.
오브젝트 개수 세는 중: 100% (6/6), 완료.
Delta compression using up to 10 threads
오브젝트 압축하는 중: 100% (2/2), 완료.
오브젝트 쓰는 중: 100% (6/6), 419 bytes | 419.00 KiB/s, 완료.
Total 6 (delta 0), reused 0 (delta 0), pack-reused 0 (from 0)
To https://github.com/XXXX/git-start.git
 * [new branch]      HEAD -> main
branch 'main' set up to track 'origin/main'.
 Pushed commits to https://github.com/XXXX/git-start.git
$ git remote -v
origin  https://github.com/XXXX/git-start.git (fetch)
origin  https://github.com/XXXX/git-start.git (push)

$ git status
현재 브랜치 main
브랜치가 'origin/main' 맞게 업데이트된 상태입니다.

다음으로 웹브라우저를 통해 깃허브에 접속해 git-start 리파지토리가 생성되었는지 확인하고 README.md 파일을 추가한 다음 이어지는 푸시, 풀에서 로컬과 원격저장소를 동기화 하는 방법을 살펴본다.

깃허브 리파지토리 확인

  • main 브랜치를 확인할 수 있다.
  • 1.txt 파일이 소스 코드 목록에 보이고 커밋 메시지가 함께 표시되어 있다.

Add a README 버튼을 클릭하여 README.md 파일을 생성한다. 내용은 다음과 같이 작성한다.

# git-start Repository
> 깃허브 시작하기 실습을 위한 리파지토리 입니다.
  • 작성이 완료되면 우측 상단의 Commit changes... 버튼을 클릭하여 커밋한다.
  • 리파지토리 메인을 돌아오면 README.md 파일이 생성된 것을 확인할 수 있다.

README.md 파일 생성

지금까지 로컬 저장소를 생성하고 원격 저장소와 연동하는 방법을 살펴보았다. 앞에서 원격 저장소에 README.md 파일을 생성했으므로 로컬과 원격이 서로 다른 상태가 되었다. 여기서는 깃허브에서 직접 README.md 파일을 생성했지만 실제 환경에서는 다른 작업자가 추가한 파일이나 변경 사항으로 발생한 상황이 될수도 있다.

로컬과 원격 저장소를 동기화 하기 위해서는 인증을 위해 다음 두가지 방법중 하나를 선택해 사용해야 한다.

  1. 깃허브에서 토큰을 생성하여 사용하는 방법
  2. SSH 키를 생성하여 사용하는 방법

두가지 방법 모두 다소 복잡하게 느낄 수 있는데 원격 저장소에 대한 접근을 단순히 비밀번호로 하는 것은 보안상 취약점이 될 수 있기 때문에 이러한 방법을 사용한다. gh auth login 과정이 정상적으로 진행되었다면 별도로 설정할 필요 없이 확인만 하면 된다.

깃허브 상단의 사용자 아이콘을 클릭하고 Settings -> SSH and GPG keys 메뉴를 클릭한다. 다음과 같이 앞에서 gh auth login 명령어로 로그인하면서 생성한 SSH 키가 등록되어 있는지 확인한다.

SSH 키 확인

Tip

  1. SSH 키가 등록되어 있지 않거나 실습과정에 문제가 있다면 깃허브에서 gh auth logout후 다시 로그인하면서 SSH키를 등록해 보도록 한다.
  2. SSH 키는 등록되어 있는데 이어지는 실습에 문제가 있다면 깃허브에서 SSH키를 삭제하고 1번을 다시 시도하거나 3번을 시도해 본다.
  3. 수동으로 키를 생성하고 등록하는 과정은 깃허브 공식 문서를 참고한다.

push, pull, fetch

푸시(push)

로컬 저장소의 변경 사항을 원격 저장소에 업로드 하는 것을 푸시(push)라고 한다. 원격 저장소에는 로컬 저장소와 동일한 상태로 유지되어야 하므로 로컬 저장소의 변경 사항을 원격 저장소에 업로드 해야 한다.

이때 원격 저장소와 로컬 저장소의 변경 사항이 다르면 푸시가 되지 않는다. 이런 경우에는 fetch를 통해 변경내역을 가져온 다음 상황에 따라 pull을 하거나 merge를 해야 한다.

풀(pull)

원격 저장소의 변경 사항을 로컬 저장소에 반영하는 것을 풀(pull)이라고 한다. 원격 저장소에 다른 사용자가 변경 사항을 업로드 했을 때 로컬 저장소에도 이를 반영하는 것이다.

페치(fetch)

원격 저장소의 변경 사항을 로컬 저장소에 반영하지 않고 저장하는 것을 페치(fetch)라고 한다. 페치는 원격 저장소의 변경 사항을 확인하기 위한 용도로 사용하고 변경 사항을 반영하려면 풀이나 병합을 해야 한다. 페치후 git status 로 확인하면 푸시 혹은 풀이 필요하다는 메시지를 볼 수 있다.

실습: 푸시 오류

현재 상황은 원격 저장소에 README.md 파일이 추가되었지만 로컬 저장소에는 반영되지 않은 상태이다. 이 상태에서 푸시를 하면 다음과 같이 오류가 발생한다.

$ git push origin main
To github.com:albks-edu/git-start.git
 ! [rejected]        main -> main (fetch first)
error: 레퍼런스를 'github.com:albks-edu/git-start.git' 푸시하는데 실패했습니다
hint: Updates were rejected because the remote contains work that you do not
hint: have locally. This is usually caused by another repository pushing to
hint: the same ref. If you want to integrate the remote changes, use
hint: 'git pull' before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.
  • fetch 를 먼저 수행해야 한다는 메시지가 나타난다.
  • 원격 저장소의 변경 사항을 로컬 저장소에 반영하려면 풀을 해야 한다.

먼저 페치를 수행하고 상태를 확인한다.

$ git fetch origin
remote: Enumerating objects: 4, done.
remote: Counting objects: 100% (4/4), done.
remote: Compressing objects: 100% (3/3), done.
remote: Total 3 (delta 0), reused 0 (delta 0), pack-reused 0 (from 0)
오브젝트 묶음 푸는 중: 100% (3/3), 1015 bytes | 507.00 KiB/s, 완료.
github.com:albks-edu/git-start URL에서
   178dc10..358f483  main       -> origin/main

$ git status
현재 브랜치 main
브랜치가 'origin/main'보다 1개 커밋 뒤에 있고, 앞으로 돌릴  있습니다.
  (로컬 브랜치를 업데이트하려면 "git pull" 사용하십시오)

커밋할 사항 없음, 작업 폴더 깨끗함
  • fetch 결과 로컬 브랜치를 업데이트 하기 위해 풀을 해야 한다는 메시지가 나타난다.
  • 로컬은 컷밋할 사항이 없기 때문에 풀을 해도 상관없다.

이제 풀을 수행한다.

$ git pull origin main
업데이트  179aef3..d5bc996
Fast-forward
 README.md | 2 ++
 1 file changed, 2 insertions(+)
 create mode 100644 README.md

$ ls
1.txt       README.md
  • 풀을 수행하면 원격 저장소의 변경 사항이 로컬 저장소에 반영된다.
  • README.md 파일이 추가된 것을 확인할 수 있다.
  • ls 명령으로 파일 목록을 확인하면 로컬에 없었던 README.md 파일이 추가된 것을 확인할 수 있다.

추가 실습 도구

어느정도 연습이 되었다면 다음과 같은 온라인 인터랙티브 도구를 사용하여 git의 개념과 사용법을 좀더 쉽게 익힐 수 있다.

learning git branching