리눅스 환경에서 로컬 Git 저장소 관리하기

CompTIABeginner
지금 연습하기

소개

이 실습에서는 리눅스 환경에서 로컬 Git 저장소를 관리하는 데 필요한 기본 명령어를 학습합니다. 먼저 git init을 사용하여 새 저장소를 초기화하고 git config로 사용자 정보를 설정하는 것부터 시작합니다. 이는 Git 을 사용하여 버전 관리를 시작하는 모든 프로젝트의 필수적인 첫 단계입니다.

초기 설정이 끝나면 Git 의 핵심 작업 흐름을 연습합니다. 여기에는 새 파일을 생성하고, git add를 통해 추적 대상으로 등록 (스테이징) 하며, git commit을 사용하여 저장소의 기록에 저장하는 과정이 포함됩니다. 그 다음 파일을 수정하고 변경 사항을 커밋한 후, git log 명령어를 사용하여 프로젝트가 어떻게 변화해 왔는지 전체 커밋 내역을 검토하는 방법을 배웁니다.

이 실습은 단계별 안내를 통해 학습과 연습을 돕는 가이드형 실습입니다. 각 단계를 주의 깊게 따라가며 실무 경험을 쌓으시기 바랍니다. 통계 데이터에 따르면 이 실습은 초급 수준이며, 100%의 완료율을 기록하고 있습니다. 또한 학습자들로부터 99%의 긍정적인 평가를 받았습니다.

Git 저장소 초기화 및 사용자 설정

이 단계에서는 새 Git 저장소를 초기화하고 사용자 정보를 설정하는 것으로 시작합니다. Git 저장소는 Git 이 프로젝트 파일의 변경 사항을 추적하는 디렉토리입니다. 저장소를 초기화하는 것은 Git 버전 관리를 사용하기 위한 첫 번째 관문입니다.

현재 작업 디렉토리는 /home/labex/project입니다. 이 디렉토리를 Git 저장소로 만들 것입니다.

먼저 git init 명령어를 실행합니다. 이 명령어는 현재 디렉토리에 비어 있는 새 Git 저장소를 생성합니다. 실행 시 필요한 모든 저장소 파일이 들어 있는 .git이라는 숨겨진 하위 디렉토리가 생성됩니다.

git init

비어 있는 저장소가 초기화되었다는 확인 메시지가 출력됩니다.

Initialized empty Git repository in /home/labex/project/.git/

저장소가 생성되었으므로 다음 단계는 사용자 정보를 설정하는 것입니다. Git 은 이 정보를 사용하여 여러분이 생성하는 모든 커밋에 이름과 이메일 주소를 연결합니다. 이는 협업 프로젝트에서 누가 어떤 변경을 했는지 추적하는 데 매우 중요합니다.

git config 명령어에 --global 옵션을 함께 사용합니다. --global 옵션은 이 시스템에서 labex 사용자가 작업하는 모든 Git 저장소에 이 설정이 적용되도록 합니다.

다음 명령어를 실행하여 사용자 이름과 이메일 주소를 설정하세요. 이 실습에서는 사용자 이름으로 labex를, 이메일로 labex@example.com을 사용합니다.

git config --global user.name "labex"
git config --global user.email "labex@example.com"

이 명령어들은 성공적으로 실행될 경우 별도의 출력 결과가 없습니다. 설정이 올바르게 적용되었는지 확인하려면 사용자의 모든 Git 설정 목록을 확인할 수 있습니다.

git config --list

출력 결과에 방금 설정한 user.nameuser.email을 포함한 설정 목록이 표시됩니다.

user.name=labex
user.email=labex@example.com
...

이제 Git 저장소 초기화와 사용자 정보 설정을 성공적으로 마쳤습니다. 파일을 추가하고 변경 사항을 추적할 준비가 되었습니다.

첫 번째 파일 생성 및 커밋 (git addgit commit)

이 단계에서는 첫 번째 파일을 생성하고 이를 Git 저장소에 커밋합니다. 커밋은 스테이징된 변경 사항의 스냅샷을 저장소 기록에 저장하는 과정입니다. 이 과정은 크게 git addgit commit 두 가지 명령어로 이루어집니다.

먼저 간단한 README.md 파일을 만들어 보겠습니다. 이 파일은 보통 프로젝트에 대한 정보를 제공하기 위해 프로젝트에 포함되는 일반적인 파일입니다. echo 명령어를 사용하여 파일을 생성하고 텍스트를 추가합니다. 모든 명령어는 현재 디렉토리인 /home/labex/project에서 실행해야 합니다.

echo "Hello, Git" > README.md

파일을 생성했으므로 git status 명령어를 사용하여 저장소의 상태를 확인할 수 있습니다. 이 명령어는 작업 디렉토리와 스테이징 영역의 현재 상태를 보여줍니다.

git status

출력 결과는 다음과 같습니다.

On branch master

No commits yet

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

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

이 출력은 README.md가 "untracked file(추적되지 않는 파일)"임을 알려줍니다. 즉, Git 이 파일의 존재는 인식하지만 아직 저장소의 버전 기록에는 포함되지 않았다는 뜻입니다.

새 파일을 추적하기 시작하려면 파일을 스테이징 영역에 추가해야 합니다. 스테이징 영역은 커밋을 하기 전에 일련의 변경 사항을 준비하는 중간 단계입니다. git add 명령어를 사용하여 README.md를 스테이징합니다.

git add README.md

이 명령어는 출력을 생성하지 않습니다. 어떤 변화가 생겼는지 확인하려면 다시 git status를 실행합니다.

git status

이제 출력이 다음과 같이 변경되었습니다.

On branch master

No commits yet

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

파일이 이제 "Changes to be committed(커밋할 변경 사항)" 아래에 나열됩니다. 이는 파일이 스테이징 영역에 있으며 다음 커밋을 위한 준비가 되었음을 의미합니다.

마지막으로, 이 스냅샷을 프로젝트 기록에 저장하기 위해 git commit 명령어를 사용합니다. 각 커밋에는 -m 옵션을 사용하여 어떤 변경이 이루어졌는지 설명하는 메시지를 포함하는 것이 좋습니다.

git commit -m "Initial commit: Added README.md"

명령어를 실행하면 커밋 내용을 요약하는 확인 메시지가 표시됩니다.

[master (root-commit) <commit_hash>] Initial commit: Added README.md
 1 file changed, 1 insertion(+)
 create mode 100644 README.md

첫 번째 커밋을 성공적으로 완료했습니다! 이제 README.md 파일은 공식적으로 Git 저장소 기록의 일부가 되었습니다.

파일 수정 및 변경 사항 커밋

이 단계에서는 기존 파일의 수정 사항을 추적하는 방법을 배웁니다. 버전 관리의 핵심 기능 중 하나는 시간이 지남에 따라 파일이 어떻게 변하는지 확인하는 능력입니다. 이는 파일이 업데이트될 때마다 변경 사항을 커밋함으로써 가능해집니다.

/home/labex/project 디렉토리에 있는 README.md 파일을 계속 사용하겠습니다. 여기에 새로운 텍스트 한 줄을 추가해 보겠습니다. 다시 echo 명령어를 사용하되, 이번에는 파일 내용을 덮어쓰지 않고 끝에 내용을 추가하는 >> 연산자를 사용합니다.

echo "This is a new line." >> README.md

파일이 수정되었으므로 git status로 저장소 상태를 확인해 봅니다.

git status

Git 은 README.md 파일이 수정되었음을 보고합니다.

On branch master
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:   README.md

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

출력 결과의 "Changes not staged for commit(커밋하도록 스테이지되지 않은 변경 사항)" 아래에 modified: README.md가 표시됩니다. 이는 Git 이 변경 사항을 감지했지만, 아직 다음 커밋을 위해 스테이징 영역에 추가되지는 않았음을 의미합니다.

새 파일을 추가할 때와 마찬가지로, 수정 사항을 스테이징하려면 git add를 사용해야 합니다. 이를 통해 다음 커밋에 이 특정 변경 사항을 포함하고 싶다는 의사를 Git 에 전달합니다.

git add README.md

마찬가지로 이 명령어는 출력이 없습니다. git status를 한 번 더 실행하여 변경 사항이 스테이징되었는지 확인합니다.

git status

이제 파일이 "Changes to be committed" 아래에 표시됩니다.

On branch master
Changes to be committed:
  (use "git restore --staged <file>..." to unstage)
 modified:   README.md

변경 사항이 스테이징되었으므로 저장소 기록에 커밋할 수 있습니다. 업데이트 내용을 명확하게 설명하는 메시지와 함께 git commit을 실행합니다.

git commit -m "Added a new line to README.md"

커밋 확인 메시지가 표시됩니다.

[master <commit_hash>] Added a new line to README.md
 1 file changed, 1 insertion(+)

이제 파일을 성공적으로 수정하고 변경 사항을 커밋했습니다. 수정 (Modify), 스테이징 (Stage), 커밋 (Commit) 으로 이어지는 이 작업 흐름은 Git 으로 작업할 때 반복적으로 사용하게 될 가장 기본적인 주기입니다.

git log를 이용한 커밋 내역 검토

마지막 단계에서는 저장소의 커밋 내역을 검토하는 방법을 배웁니다. git log 명령어는 지금까지 이루어진 모든 커밋을 시간 순서대로 보여주는 강력한 도구입니다. 이는 프로젝트가 어떻게 발전해 왔는지 이해하는 데 필수적입니다.

/home/labex/project 디렉토리에서 git log 명령어를 실행합니다.

git log

이 명령어는 여러분이 생성한 커밋들의 상세 목록을 표시하며, 가장 최근의 커밋이 가장 위에 나타납니다. 출력 결과는 다음과 유사할 것입니다.

commit <commit_hash_2> (HEAD -> master)
Author: labex <labex@example.com>
Date:   <commit_date_2>

    Added a new line to README.md

commit <commit_hash_1>
Author: labex <labex@example.com>
Date:   <commit_date_1>

    Initial commit: Added README.md

각 커밋 정보의 의미는 다음과 같습니다.

  • commit: 커밋의 식별자 역할을 하는 고유한 40 자 SHA-1 해시 값입니다.
  • Author: Git 설정에 기반한 커밋 작성자의 이름과 이메일입니다.
  • Date: 커밋이 생성된 날짜와 시간입니다.
  • 커밋 메시지: 들여쓰기 된 텍스트는 커밋의 목적을 설명하기 위해 -m 옵션으로 입력한 메시지입니다.

로그는 less와 같은 페이저 프로그램을 통해 표시됩니다. 화살표 키를 사용하여 위아래로 스크롤할 수 있습니다. 로그 보기를 종료하고 터미널 프롬프트로 돌아가려면 q 키를 누르면 됩니다.

커밋 내역을 더 간결하게 보려면 --oneline 옵션을 사용할 수 있습니다. 이는 전체적인 흐름을 빠르게 파악할 때 유용합니다.

git log --oneline

출력이 훨씬 짧아져 각 커밋의 해시 요약본과 커밋 메시지가 한 줄에 표시됩니다.

<short_hash_2> (HEAD -> master) Added a new line to README.md
<short_hash_1> Initial commit: Added README.md

축하합니다! Git 저장소를 초기화하고, 파일을 추가 및 커밋하며, 프로젝트의 기록을 검토하는 기본 작업 흐름을 모두 익히셨습니다.

요약

이 실습에서는 리눅스 환경에서 로컬 Git 저장소를 관리하는 기본 단계를 학습했습니다. 먼저 git init 명령어를 사용하여 프로젝트 디렉토리에 새 저장소를 초기화했습니다. 초기화 후에는 git config --global 명령어로 사용자 이름과 이메일 등 필수 사용자 설정을 구성하여 향후 모든 커밋에 작성자 정보가 올바르게 기록되도록 했습니다. 그런 다음 새 파일을 생성하고, git add로 다음 커밋을 위해 스테이징하며, git commit을 사용하여 변경 사항을 저장소 기록에 영구적으로 기록하는 버전 관리의 핵심 작업 흐름을 연습했습니다.

또한 변경 사항을 만들고 추적하는 반복적인 과정을 실습했습니다. 기존 파일을 수정하고 git addgit commit 주기를 반복하여 새 버전을 저장하는 과정을 거쳤습니다. 마지막으로, 고유 식별자, 작성자, 날짜 및 커밋 메시지를 포함한 모든 커밋의 연대순 목록을 보여주는 git log 명령어를 사용하여 프로젝트의 내역을 검토하는 방법을 배웠습니다. 이를 통해 시간이 지남에 따라 저장소에 발생한 변화를 명확하게 파악할 수 있게 되었습니다.