Get Up & Code, MacKin Talk

깃(Git)&깃허브(Github) 배우기 -2(깃 저장소 만들기) 본문

Computer Science/Git,Github

깃(Git)&깃허브(Github) 배우기 -2(깃 저장소 만들기)

맥킨 2021. 2. 15. 23:21

깃& 깃헙 배우기 시리즈
내용이 잘 이해되지 않는다면 이전 포스팅을 차례로 확인하실 것을 추천드립니다.

2021/02/14 - [Computer Science/Git,Github] - 깃(Git)&깃허브(Github) 배우기 -1



포스팅 개요

 

이번 포스팅에서는 깃을 사용해 깃 저장소를 만드는 방법에 대해 익혀보고자 합니다.

 

먼저 터미널이나 Git Bash 창을 켜주세요.

필자는 맥에서 iTerm2를 사용하고 있습니다.

먼저 git이라는 폴더 내에 아무것도 파일이나 폴더도 없는 상태에서

mkdir example-git을 입력해줍니다.
mkdir은 디렉토리를 만드는 명령어이고, 뒤에 따라오는 example-git은 폴더명을 의미합니다.

mkdir example-git

 

이후 

cd example-git

명령어를 이용해 example-git 폴더 내로 이동합니다.

 

이제 이 디렉터리 내에 저장소를 만들기 위해 다음 명령어를 입력합니다.

git init

위 명령어는 깃을 사용하기 위해 디렉토리를 초기화 해주는 역할을 합니다.

git init

 

이제 ls 명령어를 활용해 폴더 내부를 점검해보면, .git 파일이 생성된 것을 확인할 수 있습니다.

ls -la

ls -la

 

실제로 탐색기를 이용하면 .git 디렉터리가 보이진 않습니다. 기본적으로 숨김 파일로 설정되어 있습니다.

탐색기에서 숨김 파일을 보이도록 설정할 경우, git 폴더를 확인할 수 있습니다.


.git의 파일이 가지는 역할에 대해서 알아보도록 하겠습니다.

먼저 .git 폴더를 포함하는 파일 내부를 작업트리(working tree)라고 합니다.

 

그리고 .git 폴더는 스테이지(stage)저장소(repository)로 나눌 수 있습니다.

스테이지버전으로 만들 파일들이 대기하는 공간입니다. 
저장소는 스테이지에서 대기하고 있던 파일들을 버전으로 만들어 저장하는 곳입니다.

작업 트리에서 수정한 파일 중 버전으로 만들 파일들을 스테이지로 옮겨야 하고, 스테이지에서 대기하던 파일들을 버전으로 만들어 저장하는 곳이 저장소입니다.

따라서 깃은 다음과 같은 흐름을 가진다고 말할 수 있습니다.
작업 트리에서 수정된 내용 중 버전으로 저장될 파일들을 스테이지로 옮기고, Commit을 해서 저장소에 저장한다고 말할 수 있습니다.

먼저 git을 설치한 디렉터리에서 깃 상태를 확인하기 위해 다음과 같은 명령어를 입력합니다.

git status

그럼 다음과 같은 내용을 확인할 수 있습니다. 

해석은 다음과 같이 가능합니다.

On branch master : 현재의 브랜치를 나타냅니다.

No commits yet : 커밋이 아직 이루어지지 않았음.

nothing to commits : 커밋할 파일이나 폴더가 없음.

 

디렉터리를 초기화한 이후 전혀 디렉터리 내에서 어떠한 변화도 없었기 때문에 위의 문구는 당연하게 받아 들일 수 있습니다.

 

그럼 디렉터리에 변화를 줘보겠습니다.


폴더에 새로운 텍스트 파일을 하나 추가해주었습니다. 필자는 vim 편집기를 이용해 작성했습니다.

vim change.txt

i : insert 또는 a : add를 누르고, 내용을 작성한 후, esc를 누른 후 :wq 를 작성 후 엔터를 눌러줍니다.

다시 리눅스 명령어를 이용해 조회해보면,

ls -la

 

작업 트리(working tree) 영역에 change.txt가 생성된 것을 확인할 수 있습니다.

git status

명령어를 입력해 깃 상태를 다시 조회해보면, 다음 문구를 확인할 수 있습니다.

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

 

Untracked files한번도 버전 관리를 하지 않은 파일을 의미합니다.

change.txt라는 파일은 작업 트리에만 존재하고, 스테이지에 올리지 않았음을 의미합니다.

 

그럼 이제 change.txt 파일을 스테이지 영역에 올려보겠습니다.


깃의 스테이징 명령어는 

git add 파일명

입니다. 

change.txt 파일이 changed to be commited 영역에 작성된 것을 확인할 수 있습니다.
이제 change.txt 파일은 작업 트리(working tree)와 스테이지 영역에 들어있음을 확인할 수 있습니다.

이제 스테이지 영역에 올라온 파일을 커밋해보도록 하겠습니다.

깃에서 버전을 만든다라는 표현 : 커밋한다 와 동일합니다.

커밋(commit) 명령어는 다음과 같습니다.

git commit -m "여기에 커밋과 함께 저장할 메시지를 입력해주세요."

이후 깃을 다시 살펴보기 위해 깃 상태 명령어를 입력해보도록 하겠습니다.

git status

윈도우즈나 리눅스를 사용하시는 분들은

nothing to commit
working tree clean

이 나타날 것입니다.

맥 사용자의 경우, 다음과 같은 메시지를 받을 수 있습니다.

On branch master
Untracked files:
  (use "git add <file>..." to include in what will be committed)
	.DS_Store

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


.DS_Store은 맥 Finder에서 파일 트리 구조를 이해하기 위해 자동으로 설치되는 파일이라.. 다음과 같이 스테이징과 커밋이 필요하다고 나왔지만, 실질적으로 버전관리를 위해 필요하지 않은 파일이기 때문에 신경쓰지 않으셔도 됩니다.

이제 커밋을 마쳤기 때문에 저장소에 버전이 저장된 상태입니다.

저장된 버전을 확인하기 위해서는 git log 명령어를 사용해야 합니다.

아까 제가 커밋을 할 때 올렸던 메시지인 "first commit"과 함께 시간과 author 정보를 확인할 수 있습니다.

이제 스테이지에 있던 파일이 저장소로 옮겨졌음을 알 수 있습니다.


마지막으로 스테이징+커밋을 한번에 하는 방법에 대해서 알아보겠습니다.

먼저 스테이징 작업을 하기 위해 작업 트리에 변화를 주도록 하겠습니다.

 

vim change.txt

아까 생성한 파일을 다시 vim 편집기로 열어서 내용을 수정해보도록 하겠습니다. 동일한 방법으로 i 또는 a 버튼을 누르고, 내용을 입력하고, :wq 명령어를 이용해 저장 후 종료를 해주시면 됩니다.


스테이징과 커밋을 한번에 처리하기 위해서는 다음 명령어를 입력하면 됩니다.

git commit -am "커밋과 함께 등록할 메시지를 여기에 작성해주세요."

 

이제 git log를 살펴보면, 다음과 같이 두 번째 commit도 완료되었음을 확인할 수 있습니다.



다음 포스팅에서는 버전 관리를 위해 기존에 만들어진 버전들을 확인하는 방법과 각 버전 마다 어떤 차이가 있는지 파악해보도록 하겠습니다.


참고 

 

Do it! 지옥에서 온 문서 관리자 깃&깃허브 입문 / 이지스퍼블리싱 

 


깃& 깃헙 배우기 시리즈

2021/02/14 - [Computer Science/Git,Github] - 깃(Git)&깃허브(Github) 배우기 -1

2021/02/16 - [Computer Science/Git,Github] - 깃(Git)&깃허브(Github) 배우기 -3(커밋 확인 및 버전 관리)