첫 번째 Git 실습

GitBeginner
지금 연습하기

소개

Git 의 세계로 떠나는 흥미진진한 첫 여정에 오신 것을 환영합니다! 작업 중 실수를 바로잡기 위해 시간을 되돌리고 싶었거나, 프로젝트의 변경 사항을 추적하느라 애를 먹은 적이 있다면 정말 잘 오셨습니다. Git 은 코드와 문서를 위한 타임머신과 같습니다. 이 실습을 마칠 때쯤이면 여러분은 이 타임머신을 자유자재로 다룰 수 있게 될 것입니다!

Git 에 대해 들어본 적이 없더라도 걱정하지 마세요. 아주 기초부터 시작하여 각 단계를 친절히 안내해 드립니다. 이번 실습을 통해 Git 저장소를 만들고, 변경 사항을 추적하고, 커밋을 만드는 방법을 배우게 됩니다. 이는 전 세계 개발자들이 매일 놀라운 소프트웨어를 만들기 위해 사용하는 핵심 기술입니다. 자, 이제 모험을 시작해 볼까요?

이 과정은 학습과 연습을 돕기 위해 단계별 지침을 제공하는 가이드 실습입니다. 각 단계를 완료하고 실무 경험을 쌓으려면 지침을 주의 깊게 따르세요. 통계에 따르면 이 실습은 중급 난이도이며, 수료율은 79%입니다. 학습자들로부터 100%의 긍정적인 평가를 받았습니다.

비밀 실험실 만들기

Git 을 본격적으로 다루기 전에 먼저 작업 공간을 준비합시다. 모든 실험이 이루어질 여러분만의 비밀 실험실을 만든다고 생각하면 됩니다.

터미널 열기

터미널을 열고 (보이는 것만큼 무섭지 않으니 걱정 마세요!) 다음의 마법 주문들을 입력해 보세요:

cd ~/project
mkdir my-time-machine
cd my-time-machine

각 주문의 의미는 다음과 같습니다:

  1. cd ~/project: 프로젝트 폴더로 순간 이동합니다.
  2. mkdir my-time-machine: "my-time-machine"이라는 이름의 새 폴더를 만듭니다.
  3. cd my-time-machine: 새로 만든 비밀 실험실 안으로 들어갑니다.

축하합니다! 첫 번째 Git 프로젝트를 위한 공간을 마련했습니다. 그런데 왜 이런 특별한 폴더가 필요할까요? 코딩의 세계에서는 작업을 체계적으로 정리하는 것이 매우 중요하기 때문입니다. 프로젝트가 커질수록 각 프로젝트를 위한 전용 공간이 있다는 사실에 감사하게 될 것입니다.

타임머신 초기화하기 (Git 저장소)

비밀 실험실이 준비되었으니 이제 타임머신을 조립할 차례입니다! 코딩 세계에서는 이 타임머신을 "Git 저장소 (Repository)"라고 부릅니다.

터미널에 다음 명령어를 입력하세요:

git init

그러면 다음과 같은 메시지가 나타날 것입니다:

Initialized empty Git repository in /home/labex/project/my-time-machine/.git/

와우! 여러분만의 타임머신을 방금 만들어냈습니다! 그런데 코드에 왜 타임머신이 필요한 걸까요?

여러분이 소설을 쓰고 있다고 상상해 보세요. 결말을 여러 버전으로 써보고 싶을 수도 있고, 마음에 들었던 문단을 실수로 지워버릴 수도 있습니다. Git 이 없다면 "소설_최종.txt", "소설_최종_v2.txt", "소설_진짜_최종.txt"와 같은 파일들을 일일이 저장해야 할 것입니다. 익숙한 상황이죠?

Git 은 이 문제를 해결해 줍니다. 여러 개의 파일을 만들지 않고도 작업물의 다양한 버전을 저장할 수 있게 해줍니다. 언제든지 이전 버전으로 쉽게 되돌아갈 수 있고, 다른 아이디어를 실험해 보기 위해 대체 시간선 (이를 "브랜치"라고 부릅니다) 을 만들 수도 있습니다. 이것이 바로 개발자들이 Git 을 사랑하는 이유입니다. 작업물을 잃어버릴 걱정 없이 마음껏 실험할 수 있는 자유를 주기 때문이죠.

타임머신 상태 확인하기

타임머신을 만들었으니 이제 타임머신이 우리에게 무엇을 말해주는지 확인해 봅시다. Git 에서는 git status 명령어를 사용합니다. 이는 타임머신에게 "지금 무슨 일이 일어나고 있니?"라고 묻는 것과 같습니다.

한번 실행해 보세요:

git status

다음과 같은 내용이 출력될 것입니다:

On branch master

No commits yet

nothing to commit (create/copy files and use "git add" to track)

조금 생소해 보일 수 있지만, 하나씩 살펴봅시다:

  • "On branch master": 브랜치를 하나의 시간선이라고 생각하세요. "master"는 프로젝트의 메인 시간선입니다.
  • "No commits yet": 커밋은 비디오 게임의 '세이브 포인트'와 같습니다. 아직 세이브 포인트를 하나도 만들지 않았다는 뜻입니다.
  • "nothing to commit": 아직 파일을 하나도 만들지 않았기 때문에 Git 이 기록할 변경 사항이 없다는 의미입니다.

"그냥 파일을 저장하는 건데 왜 이런 복잡한 과정이 필요하지?"라는 의문이 들 수도 있습니다. 좋은 질문입니다! 일반적인 저장과 달리 Git 은 시간이 흐름에 따라 프로젝트의 여러 버전을 저장할 수 있게 해줍니다. 즉, 무언가 잘못되더라도 언제든 이전 버전으로 돌아갈 수 있다는 확신을 가지고 자유롭게 실험할 수 있습니다. 프로젝트 전체에 대해 무제한 '실행 취소 (Undo)' 기능을 갖게 되는 셈이죠!

첫 번째 파일 만들기

이제 타임머신이 추적할 대상을 만들어 봅시다. 파일 안에 간단한 메시지를 적는 것부터 시작할게요:

echo "Hello, Future Me" > message.txt

이 명령어는 "Hello, Future Me"라는 텍스트가 담긴 message.txt라는 새 파일을 생성합니다.

우리가 무엇을 썼는지 확인해 봅시다:

cat message.txt

다음과 같이 출력되어야 합니다:

Hello, Future Me

좋습니다! 첫 번째 파일을 만들었습니다. 하지만 여기서부터 Git 의 마법이 시작됩니다. 현재 이 파일은 컴퓨터에 존재하지만, Git 은 아직 이 파일을 추적하고 있지 않습니다. 마치 쪽지를 써놓기만 하고 아직 타임캡슐 (Git 저장소) 에 넣지는 않은 상태와 같습니다.

다음 단계에서는 Git 이 이 새 파일에 어떻게 반응하는지, 그리고 우리가 어떻게 변경 사항을 추적하기 시작하는지 살펴보겠습니다. 이 지점이 바로 Git 이 일반적인 파일 저장 방식보다 빛을 발하는 부분입니다. Git 을 사용하면 무엇이, 언제, 왜 바뀌었는지 정확히 알 수 있습니다. 큰 프로젝트를 진행할 때 이것이 얼마나 도움이 될지 상상해 보세요!

다시 상태 확인하기

파일을 만들었으니 타임머신이 무엇을 보고 있는지 다시 물어봅시다. git status 명령어를 다시 실행하세요:

git status

이번에는 결과가 다르게 보일 것입니다:

On branch master

No commits yet

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

nothing added to commit but untracked files present (use "git add" to track)

흥미롭네요! Git 이 새 파일을 감지했지만, 현재 "untracked(추적되지 않음)" 상태라고 알려줍니다. 이것이 Git 의 멋진 점 중 하나입니다. 폴더 안의 모든 파일을 자동으로 추적하지 않고, 여러분이 프로젝트 역사에 포함하고 싶은 변경 사항만 직접 선택할 수 있게 해줍니다.

"그냥 전부 자동으로 추적하면 안 되나요?"라고 생각할 수도 있습니다. 하지만 큰 프로젝트를 한다고 상상해 보세요. 개인적인 메모나 임시 파일처럼 추적하고 싶지 않은 파일들이 있을 수 있습니다. Git 은 중요한 것만 골라서 추적할 수 있게 함으로써 프로젝트의 역사를 깔끔하고 의미 있게 유지해 줍니다.

다음 단계에서는 Git 에게 이 파일을 추적하고 싶다고 말해줄 것입니다. 여기서부터 Git 이 초능력처럼 느껴지기 시작할 거예요. 여러분의 첫 번째 세이브 포인트를 만들 준비가 되었습니다!

첫 번째 세이브 포인트 준비하기

이제 Git 에게 다음 세이브 포인트 (Git 용어로 "커밋") 에 message.txt를 포함하고 싶다고 말할 차례입니다. 이때 git add 명령어를 사용합니다:

git add message.txt

이 명령어는 실행해도 아무런 메시지가 출력되지 않지만, Git 에게 message.txt를 추적하기 시작하라고 조용히 명령한 것입니다.

상태가 어떻게 변했는지 다시 확인해 봅시다:

git status

이제 다음과 같이 보일 것입니다:

On branch master

No commits yet

Changes to be committed:
  (use "git rm --cached <file>..." to unstage)
        new file:   message.txt

보세요! 이제 Git 이 파일을 추적하고 있으며 커밋될 준비가 되었습니다. 이렇게 '추가 (add)'하고 '커밋 (commit)'하는 두 단계 과정이 처음에는 번거로워 보일 수 있지만, 사실 이것이 Git 의 강력한 무기 중 하나입니다.

타임캡슐을 준비한다고 생각해보세요. git add 명령어는 캡슐에 무엇을 넣을지 결정하는 과정이고, 커밋 (다음 단계에서 할 작업) 은 실제로 캡슐을 밀봉하는 것과 같습니다. 이를 통해 프로젝트 역사의 각 세이브 포인트에 무엇이 들어갈지 신중하게 선택할 수 있습니다.

이 기능은 규모가 큰 프로젝트에서 매우 유용합니다. 10 개의 파일을 수정했더라도 그중 3 개의 변경 사항만 먼저 커밋하고 싶을 때가 있거든요. Git 의 스테이징 영역 (현재 message.txt가 머무는 곳) 이 바로 그 일을 가능하게 해줍니다!

첫 번째 세이브 포인트 만들기 (커밋)

드디어 흥미진진한 순간입니다. 첫 번째 커밋을 만들어 보겠습니다! 커밋은 타임캡슐을 밀봉하는 것과 같습니다. 추적 중인 모든 파일의 현재 상태를 저장하고, 무엇이 바뀌었는지 설명하는 메시지를 남깁니다.

커밋을 만드는 명령어는 다음과 같습니다:

git commit -m "Send a message to the future"

다음과 비슷한 출력이 나타날 것입니다:

[master (root-commit) a1b2c3d] Send a message to the future
 1 file changed, 1 insertion(+)
 create mode 100644 message.txt

축하합니다! 첫 번째 Git 커밋을 성공적으로 마쳤습니다. 이제 프로젝트의 역사 속에 언제든 돌아올 수 있는 공식적인 지점을 저장했습니다.

이것이 바로 Git 이 강력한 이유입니다. 각 커밋은 그 순간의 프로젝트 전체에 대한 스냅샷입니다. 이런 스냅샷을 원하는 만큼 만들 수 있어 프로젝트의 상세한 기록을 남길 수 있습니다.

학교 과제를 작성한다고 상상해 보세요. 일반적인 저장 방식으로는 최신 버전만 남지만, Git 을 사용하면 "초안 작성", "결론 추가", "서론 수정" 등의 세이브 포인트를 가질 수 있습니다. 필요하다면 언제든지 이 중 어느 지점으로든 되돌아갈 수 있죠!

시간 여행 로그 확인하기

첫 커밋을 마쳤으니 이제 프로젝트의 역사를 살펴봅시다. git log 명령어를 사용하면 됩니다:

git log

다음과 같은 내용이 보일 것입니다:

commit a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6q7r8s9 (HEAD -> master)
Author: Your Name <your.email@example.com>
Date:   Mon Aug 7 10:00:00 2023 +0000

    Send a message to the future

이 로그 항목은 여러 정보를 보여줍니다:

  • 커밋의 고유 식별자 (길게 나열된 영문자와 숫자 조합)
  • 커밋을 만든 사람
  • 커밋이 만들어진 날짜와 시간
  • 우리가 작성한 커밋 메시지

이 로그는 프로젝트의 타임라인과 같습니다. 커밋을 더 많이 만들수록 이 로그에 차곡차곡 쌓여 프로젝트의 전체 역사를 형성하게 됩니다. 프로젝트가 어떻게 진화해 왔는지 이해하거나, 특정 변경 사항이 언제 발생했는지 찾아야 할 때 매우 유용합니다.

q를 눌러 로그 화면을 빠져나와 명령줄로 돌아가세요. Git 의 전체 화면 보기 모드에서 나가고 싶을 때는 언제나 q를 누르면 된다는 점을 기억하세요.

팀 프로젝트를 함께 한다고 상상해 보세요. Git 을 사용하면 누가 어떤 변경을 왜 했는지 알 수 있어 팀원들과 협업하기가 훨씬 수월해집니다. 이것이 전 세계 개발자들이 Git 을 사용하는 핵심 이유 중 하나입니다!

요약

축하합니다, 시간 여행자님! 첫 번째 Git 모험을 성공적으로 마치셨습니다. 여러분이 배운 놀라운 기능들을 다시 한번 정리해 볼까요?

  1. git init으로 Git 저장소 (타임머신) 를 만드는 방법
  2. git status로 저장소의 상태를 확인하는 방법
  3. 파일을 생성하고 git add로 커밋 준비를 하는 방법
  4. git commit으로 커밋 (세이브 포인트) 을 생성하는 방법
  5. git log로 프로젝트의 역사를 확인하는 방법

"파일을 저장하는 데 왜 이렇게까지 해야 하나요?"라는 생각이 들 수도 있습니다. 하지만 Git 이 강력한 이유는 다음과 같습니다:

  1. 상세한 기록: 프로젝트의 전체 역사를 보유하게 됩니다. 무엇이, 언제, 왜 바뀌었는지 알 수 있습니다.
  2. 자유로운 실험: 원본을 잃어버릴 걱정 없이 프로젝트의 다양한 버전을 만들어 실험할 수 있습니다.
  3. 원활한 협업: 팀으로 일할 때 누가 어떤 변경을 왜 했는지 쉽게 파악할 수 있습니다.
  4. 안전한 백업: 모든 Git 저장소는 전체 기록을 포함한 프로젝트의 완전한 백업본입니다.

이것들은 개발자들이 매일 놀라운 소프트웨어를 만들기 위해 사용하는 기초 토대입니다. 여정을 계속하면서 이러한 기초 위에 더 복잡한 프로젝트를 관리하고 다른 사람들과 협업하는 방법을 배우게 될 것입니다.

누구나 처음에는 초보자였습니다. 지금의 숙련된 개발자들도 한때는 여러분과 같은 자리에 있었습니다. 계속 연습하고, 실험하고, 무엇보다 이 과정을 즐기세요!

LabEx 에 대해 더 알고 싶다면 고객 지원 센터를 방문하거나, 소개 영상을 통해 더 자세히 알아보실 수 있습니다.

프로그래밍과 버전 관리의 세계로 향하는 여러분의 여정은 이제 막 시작되었습니다. 다음 실습이 클릭 한 번 거리에 있습니다. 계속해서 탐험하며 실력을 키워나가 보세요! 여러분의 새로운 Git 초능력으로 어떤 멋진 프로젝트를 만들어낼지 기대됩니다.