Git을 활용한 버전 관리의 기본적인 절차는 저장소 생성하고 파일을 커밋하고 원격 저장소에 업로드 하는 것입니다. 이번 포스팅에서는 저장소 생성(git init
)부터 원격 저장소 업로드(git push
)까지 간단하게 알아보겠습니다.
사용자 정보 설정
Git을 처음 설치한 후, 가장 먼저 해야 할 일은 사용자 이름과 이메일 주소를 설정하는 것입니다. 이는 커밋 할 때 저자에 기록되는 정보로, 전역 설정을 통해 한 번만 설정하면 됩니다. 아래 명령어를 사용하여 설정할 수 있습니다.
git config --global user.name "Your Name"
git config --global user.email "youremail@example.com"
작업 폴더 생성
이제 실제로 버전 관리를 할 작업 폴더를 생성해 보겠습니다. 간단하게 git-test 폴더를 만들고 그 안에 텍스트 파일을 몇 개 생성해보겠습니다.
# git-test 폴더 생성
mkdir git-test
# 폴더 이동
cd git-test
# 텍스트 파일 생성
touch a.txt b.txt c.txt
# 디렉토리 목록 확인
ls -al
total 0
drwxr-xr-x@ 5 eden staff 160 9 11 22:21 .
drwxr-xr-x@ 3 eden staff 96 9 11 22:21 ..
-rw-r--r--@ 1 eden staff 0 9 11 22:21 a.txt
-rw-r--r--@ 1 eden staff 0 9 11 22:21 b.txt
-rw-r--r--@ 1 eden staff 0 9 11 22:21 c.txt
이 상태에서 git status
명령어를 실행하면, 아직 Git 저장소가 생성되지 않았기 때문에 오류가 발생합니다.
git status
fatal: not a git repository (or any of the parent directories): .git
저장소 생성 – git init
이제 현재 작업 폴더에서 Git 저장소를 생성해보겠습니다. git init
명령어를 입력하면 로컬 저장소가 생성됩니다.
git init
Initialized empty Git repository in /Users/eden/workspace/git-test/.git/
아래 그림과 같이 main 브랜치로 저장소가 생성되었습니다. 저장소는 생성 시 main(구 버전의 경우 master) 또는 사용자가 설정한 기본 브랜치 이름으로 생성됩니다.
이 명령어를 실행하면, 현재 폴더에 .git 폴더가 생성됩니다. 이 폴더가 바로 로컬 저장소로 Git이 관리하는 메타데이터와 객체 파일들이 저장됩니다. 또한 이 폴더를 통해 버전 관리가 이루어집니다.
ls -al
total 0
drwxr-xr-x@ 6 eden staff 192 9 11 22:31 .
drwxr-xr-x@ 3 eden staff 96 9 11 22:41 ..
drwxr-xr-x@ 9 eden staff 288 9 11 22:31 .git
-rw-r--r--@ 1 eden staff 0 9 11 22:21 a.txt
-rw-r--r--@ 1 eden staff 0 9 11 22:21 b.txt
-rw-r--r--@ 1 eden staff 0 9 11 22:21 c.txt
다시 git status
명령어를 입력하면 아직 커밋되지 않았다고 표시되며, git add
명령어를 사용하여 파일을 추작하라고 합니다.
저장소에 커밋하기
git add 명령어를 사용하여 1개 파일을 스테이징 영역으로 이동시키고 추적을 시작하겠습니다.
git add a.txt
다시 git status
명령어를 입력하면 기존과 다르게 a.txt 파일
이 녹색으로 변경된 것을 확인할 수 있습니다. a.txt 파일
만 스테이징 영역으로 이동되어 추척되고 있으며, 커밋 시 해당 파일만 커밋됩니다.
b.txt 파일
과 c.txt 파일
은 git add
하지 않았기 때문에 스테이징 영역으로 이동하지 않아 커밋 시 반영되지 않습니다.
이제 git commit
명령어를 사용하여 커밋을 해보겠습니다.
git commit -m "First Commit"
[main (root-commit) c3ac259] First Commit
1 file changed, 0 insertions(+), 0 deletions(-)
create mode 100644 a.txt
로컬 저장소에 정상적으로 커밋되었습니다. 커밋 이력은 git log
명령어를 통해 확인할 수 있습니다.
git log
commit c3ac25994fe5925df74554949a69f1bc7043fcdf (HEAD -> main)
Author: eden kang <whalec-io@daum.net>
Date: Thu Sep 12 00:04:42 2024 +0900
First Commit
SSH 인증
GitHub 저장소에 파일을 업로드 하기 위해서 먼저 SSH 키를 생성 후 GitHub에 공개키를 등록해서 SSH 인증이 가능해야 합니다.
만약 SSH 인증을 위한 절차를 하지 않았다면 아래 포스트를 참고하여 인정 절차를 먼저 진행해주세요.
원격 저장소 업로드
원격 저장소는 GitHub, GitLab과 같은 서비스에 호스팅된 저장소로 먼저 원격 저장소에 저장소를 만들어야 합니다.
GitHub에 아래와 같이 아무것도 없는 빈 원격 저장소를 만들어보겠습니다.
이제 로컬 저장소 변경 내역을 원격 저장소에 업로드 해보겠습니다. 먼저 아래와 같이 원격 저장소에 연결해야 합니다. 저는 SSH 인증을 사용하기 때문에 SSH 주소를 복사 & 붙여 넣기 했습니다.
#git remote add origin <원격 저장소 URL>
git remote add origin git@github.com:whalec-io/git-test.git
원격 저장소와 로컬 저장소가 연결되었으니 로컬 저장소의 변경 내역을 업로드 해보겠습니다.
git push -u origin main
Enter passphrase for key '/Users/eden/.ssh/id_ed25519':
Enumerating objects: 3, done.
Counting objects: 100% (3/3), done.
Writing objects: 100% (3/3), 207 bytes | 207.00 KiB/s, done.
Total 3 (delta 0), reused 0 (delta 0), pack-reused 0
To github.com:whalec-io/git-test.git
* [new branch] main -> main
branch 'main' set up to track 'origin/main'.
GitHub에 가면 a.txt 파일이 정상적으로 업로드 된 것을 확인할 수 있습니다.
마무리
간단하게 저장소 생성 부터 원격 저장소 업로드까지 알아보았습니다. 다음 시간에는 스테이징에 대해서 더 자세하게 알아보도록 하겠습니다.