MMeshOps
바이브코딩을 위한 Git과 리눅스 기초
9예상 10입문

내 프로젝트의 첫 백업본 만들기

직접 Git을 사용하여 프로젝트의 현재 상태를 저장하는 방법을 배웁니다. git status, add, commit, log의 흐름을 익힙니다.

Git이 왜 바이브코딩의 생명줄인지 머리로는 이해했습니다. 그렇다면 이제 내 손으로 직접 터미널에 명령어를 쳐서, 소중한 내 프로젝트 코드의 첫 번째 세이브 포인트(커밋)를 만들어 볼 차례입니다. 파일 변경을 확인하고, 짐을 싸고, 도장을 찍고, 마지막으로 기록을 확인하는 4단계의 자연스러운 흐름을 반복 연습하면 어느새 Git 명령어가 숨 쉬듯 자연스러워질 것입니다.

Git의 3단계 공간 이해하기

무작정 명령어를 치기 전에 Git이 프로젝트를 다루는 세 가지 마법의 공간을 이해해야 합니다. 이 개념만 이해하면 Git의 기초 절반을 끝낸 것과 다름없습니다.

  1. 작업 공간 (Working Directory): 우리가 평소에 코드를 작성하고 수정하는 실제 눈에 보이는 폴더입니다. 아직 세이브되지 않은 초안들이 널려있는 책상과 같습니다.
  2. 무대 (Staging Area): 작업한 수십 개의 파일 중에서, 이번 세이브 포인트(커밋)에 포함시킬 파일들만 골라서 임시로 올려두는 무대 혹은 택배 상자입니다.
  3. 창고 (Repository): `.git`이라는 숨김 폴더 안의 영구적인 저장 공간입니다. 무대에 올라온 파일들을 찰칵 사진 찍어(커밋하여) 창고의 선반에 차곡차곡 안전하게 보관합니다.

우리의 목표는 책상 위에서 수정한 파일을 $\rightarrow$ 택배 상자에 포장하고 $\rightarrow$ 창고에 영원히 보관하는 것입니다.

현재 상황 파악하기: `git status`

어떤 작업을 하든 습관적으로 가장 많이, 제일 먼저 치게 될 명령어는 `git status`입니다. 말 그대로 현재 내 책상(프로젝트 폴더)의 상태(Status)를 브리핑해 달라는 명령입니다.

터미널에 `git status`를 치면, 지난번 세이브 이후로 새로 만들어진 파일, 내용이 수정된 파일, 혹은 지워진 파일들을 빨간색이나 초록색 글씨로 친절하게 알려줍니다.

git status 실행 화면 이해하기

$ git status
On branch main
Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
        modified:   index.html

Untracked files:
  (use "git add <file>..." to include in what will be committed)
        style.css

위 메시지는 "너 방금 `index.html` 파일을 수정했고, 이전에 없던 `style.css`라는 새 파일을 만들었는데, 이 두 개는 아직 무대(Staging Area)에 올라가지 않고 책상 위에 널브러져 있어"라는 의미입니다.

택배 상자에 담기: `git add`

`git status`로 변경된 파일들을 눈으로 확인했다면, 이제 이 변경 사항들을 이번 커밋에 포함시키기 위해 무대(택배 상자)로 올려보내야 합니다. 이때 쓰는 명령어가 `git add`입니다.

특정 파일 하나만 추가하려면 `git add index.html`처럼 파일 이름을 씁니다. 하지만 바이브코딩으로 여러 개의 파일을 동시에 수정했을 때는 이를 일일이 타이핑하기 귀찮습니다. 책상 위에서 변경된 모든 파일을 한꺼번에 상자에 쓸어 담고 싶다면, 모든 것을 의미하는 점(`.`) 기호를 사용하여 `git add .`이라고 입력합니다.

git add 사용의 정석

권장

  • 명령어를 치기 전에 git status로 어떤 파일들이 변경되었는지 먼저 확인합니다.
  • 대부분의 경우 터미널에 git add . (점)을 치는 것으로 빠르고 간편하게 모든 수정 사항을 무대에 올립니다.
  • 올린 직후에 다시 한 번 git status를 쳐서 파일 이름들이 초록색으로 변했는지 확인합니다. 초록색은 포장이 잘 되었다는 뜻입니다.

주의

  • 변경 확인 없이 무지성으로 처음부터 add를 치면 안 됩니다. 실수로 넣지 말아야 할 대용량 파일이나 비밀번호 파일이 함께 포장될 수 있습니다.

사진 찍고 영원히 저장하기: `git commit`

모든 짐을 `git add .`로 택배 상자에 담았다면, 이제 테이프를 밀봉하고 상자 겉면에 '내용물 이름표'를 붙여 창고로 보낼 차례입니다. 이 행위가 바로 사진을 찍어 세이브 포인트를 생성하는 `git commit`입니다.

커밋을 할 때는 "내가 이번 세이브에서 어떤 코드를 수정했는지" 미래의 나와 동료가 알아볼 수 있도록 반드시 메모(메시지)를 남겨야 합니다. 이를 옵션 `-m`(message)을 써서 전달합니다.

사용법은 `git commit -m "여기에 메모 작성"` 형태입니다.

올바른 커밋 메시지 남기기

bash
```bash
$ git commit -m "사용자 로그인 화면 UI 수정"
[main 1a2b3c4] 사용자 로그인 화면 UI 수정
 2 files changed, 45 insertions(+), 2 deletions(-)
```
위 메시지가 뜨면 2개의 파일이 성공적으로 창고에 저장되어 세이브 포인트가 생성된 것입니다!
  1. 1나쁜 예: git commit -m '수정함' (나중에 도대체 뭘 수정했는지 절대 알 수 없습니다.)
  2. 2나쁜 예: git commit -m 'asdfasdf' (급하다고 의미 없는 글자를 넣으면 백업의 의미가 퇴색됩니다.)
  3. 3좋은 예: git commit -m '사용자 로그인 화면 UI 수정' (무엇을, 왜 수정했는지 한눈에 파악됩니다.)

내 작업의 발자취 감상하기: `git log`

방금 저장한 내역을 포함하여, 과거부터 지금까지 내가 차곡차곡 쌓아 올린 모든 세이브 포인트의 역사를 훑어보고 싶다면 `git log` 명령어를 입력합니다.

`git log`를 치면, 각 커밋 고유의 긴 암호(해시값), 커밋을 남긴 사람의 이름과 시간, 그리고 아까 `-m` 옵션으로 정성스럽게 적었던 메시지가 시간의 역순(최근 것이 맨 위)으로 출력됩니다.

이 로그 창은 앞서 터미널 환경에서 배운 `less` 화면과 똑같이 동작합니다. 즉, 방향키로 위아래로 스크롤할 수 있으며, 다 보고 나서 빠져나오고 싶을 때는 반드시 알파벳 `q`를 눌러야 원래 터미널 화면으로 돌아올 수 있습니다.

개념 퀴즈

퀴즈 답을 맞춰야 학습 완료가 됩니다.

변경된 내 파일들을 안전하게 하나의 버전으로 저장(커밋)하기 위해 거쳐야 하는 올바른 Git 명령어 순서는 무엇인가요?

3줄 요약

  1. 1Git은 작업 공간(내 책상), 무대(Staging Area, 택배 상자), 창고(Repository, 영구 보관소)의 3단계 개념으로 파일을 이동시키며 버전을 관리합니다.
  2. 2git status로 수정된 파일을 확인한 후, git add . 명령어를 통해 모든 변경 사항을 한 번에 무대로(포장 상자 안으로) 끌어올립니다.
  3. 3git commit -m '작업 내용' 명령어로 포장된 파일들에 의미 있는 이름표를 붙여 하나의 영구적인 세이브 포인트를 생성하고, git log로 그 역사를 확인합니다.