더북(TheBook)

파일 추적하고 저장하기

깃으로 파일 버전을 관리할 디렉터리를 생성( mkdir)하고 해당 디렉터리로 이동( cd)하여 깃 저장소를 생성( git init)합니다. git init 명령을 실행하는 디렉터리(~/gittest)의 파일은 깃이 관리하게 되며 시스템 관리자가 처리하는 모든 작업 내용이 .git 디렉터리에 저장됩니다.

shinjaehun@losttemple:~$ mkdir gittest
shinjaehun@losttemple:~$ cd ~/gittest/
shinjaehun@losttemple:~/gittest$ git init
Initialized empty Git repository in /home/shinjaehun/gittest/.git/

git status는 디렉터리의 상태를 보고하는 명령입니다. 아직 어떤 작업도 이루어지지 않은 초기 상태입니다.

shinjaehun@losttemple:~/gittest$ git status
# On branch master
#
# Initial commit
#
nothing to commit (create/copy files and use "git add" to track)

echo 명령으로 디렉터리에 ‘content01.txt’라는 파일을 생성해보겠습니다.

shinjaehun@losttemple:~/gittest$ echo 'This file is meaningless.' > content01.txt
Tip

명령 프롬프트에서 “echo ‘[문자열]’ > [파일명]”과 같이 명령을 실행하면 해당 ‘문자열’을 내용으로 ‘파일명’이라는 파일을 생성합니다.

git status로 확인해보면 작업 디렉터리 내 ‘content01.txt’ 파일이 있는데 변화를 추적하지 않는(Untracked files) 상태임을 알 수 있습니다.

shinjaehun@losttemple:~/gittest$ git status
# On branch master
#
# Initial commit
#
# Untracked files:
#   (use "git add ..." to include in what will be committed)
#
#  content01.txt
nothing added to commit but untracked files present (use "git add" to track)

결과에서 알 수 있듯이 깃이 디렉터리에 존재하는 파일들의 상태 변화를 추적하도록 하려면 관리 대상으로 등록해야 합니다. 이를 위해 git add 명령으로 파일을 준비 영역StagingArea에 추가합니다. git add [파일명]으로 변경된 파일을 하나씩 추가할 수 있습니다.

shinjaehun@losttemple:~/gittest$ git add content01.txt
이렇게 하세요!

디렉터리의 모든 파일을 추가하려면 ‘git add .’이라고 입력합니다.

git status로 상태를 확인합니다. 파일이 깃의 관리 대상(staged)이 되었습니다.

shinjaehun@losttemple:~/gittest$ git status
# On branch master
#
# Initial commit
#
# Changes to be committed:
#    (use "git rm --cached ..." to unstage)
#
#  new file:   content01.txt

준비 영역에 저장한 작업을 저장소로 보내는 일이 마지막 과정입니다. 변경된 작업 내용을 확정한다고 해서 이를 커밋commit이라고 합니다. git commit -m “[작업 내용]”을 입력해서 커밋합니다. 작업 내용에는 지금까지 작업한 내용을 요약한 간단한 설명이 들어갑니다.

shinjaehun@losttemple:~/gittest$ git commit -m 'Added content01.txt'
[master (root-commit) 7d866c7] Added content01.txt
1 file changed, 1 insertion(+)
create mode 100644 content01.txt

다시 git status로 결과를 확인해보면 작업 디렉터리, 준비 영역 모두 비어 있는 상태입니다. 커밋 후에는 항상 이 상태가 되어야 합니다.

shinjaehun@losttemple:~/gittest$ git status
# On branch master
nothing to commit (working directory clean)

지금까지 작업한 내용을 살펴보는 명령은 git log입니다. git log 명령은 커밋 ID와 커밋을 실행한 사용자, 커밋한 날짜와 시간 정보, 커밋 과정에서 입력한 작업 내용을 표시할 것입니다. -p 옵션을 붙이면 어떤 파일을 어떻게 고쳤는지 더 자세한 정보를 확인할 수 있습니다.

shinjaehun@losttemple:~/gittest$ git log -p
commit 7d866c71f79b96a1c5a9dd9987f794c73d9e41cd
Author: Shin Jaehun 
Date: Sat Jul 5 12:57:37 2014 +0900

    Added content01.txt

diff --git a/content01.txt b/content01.txt
new file mode 100644
index 0000000..75ea47c
--- /dev/null
+++ b/content01.txt
@@ -0,0 +1 @@
+This file is meaningless.
Tip

텍스트 터미널에서 바뀐 내용을 쉽게 파악하기 어려운 부분이 있습니다. 나중에 깃허브 저장소에 파일을 올려 관리하면 좀 더 분명하게 수정된 부분을 파악할 수 있습니다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.