버전 관리 시작하기
우선 아무 디렉토리에 가서 폴더 하나를 만들어 보겠습니다.
d:
명령으로 D 드라이브로 이동한 다음
dir
명령으로 D 드라이브에 어떤 폴더들이 있나 확인해보았습니다.
cd exercise
명령으로 exercise 폴더로 이동했고
mkdir hello-git-cli
명령으로 hello-git-cli 폴더를 생성했습니다.
이제 생성한 hello-git-cli 폴더로 이동한 다음 git 에게 이 폴더를 관리하라고 명령을 내려보겠습니다.
cd hello-git-cli
명령으로 hello-git-cli 폴더로 이동한 다음
git init .
명령으로 현재 폴더를 git으로 하여금 initialize 하도록 만들었습니다.
이렇게 하면 .git 디렉터리가 생성되게 됩니다. 보이지는 않지만 말이죠.
.git 폴더에 들어가서 무슨 파일이 있나 보니까 많은 파일들이 자동으로 생성된 것을 알 수 있습니다.
우리는 이제 앞으로 다양한 버전을 만들게 될 텐데, 위 파일들에 알아서 저장이 되게 됩니다. 그렇기 때문에 여러분은 절대로 .git 폴더를 지우면 안됩니다. .git 폴더를 지우면 우리의 모든 버전 정보가 날아가게 됩니다.
버전 만들기
버전을 직접 만들기 전에, 여러분들이 헷갈려 하실 만한 정보들이 있습니다. 먼저 다음 그림을 보면서 이해를 하고 넘어가시죠.
우리가 버전으로 만들어서 관리를 할 때, 버전이 저장되는 곳을 git에서는 Repository 라고 합니다. 한국말로 하면 저장소입니다. 우리가 위에서 보았던 .git 디렉토리를 Repository 라고 보아도 무방할 것 같습니다.
Working tree 는 우리가 파일을 만들고 수정할 텐데요. 아직 버전으로 만들어지기 전 단계를 파일들을 Working tree 라고 이해하시면 되겠습니다.
Staging Area 는 우리가 버전을 만드려고 할 때 지금 작업하던 파일이 10개다 근데 그 중에서 10개 다 버전으로 만들 것이 아니라 2개만 찝어서 하나의 버전으로 만들고 싶다 하면 Staging Area 라고 하는 곳에 그 2개의 파일을 우선 올려놓아야 합니다. 그럼 여기에 10개의 파일이 있다 하더라도 2 개의 파일만 Staging Area 에 올려놓아져 있기 때문에 git 에게 version 을 만들어 라고 명령을 하면 git 은 Staging Area 에 올라와 있는 파일들 2개만 탁 모아서 하나의 버전으로 만들어서 Repository 에 넣게 됩니다.
그래서 Working Tree 는 우리가 작업하는 곳으로, 수정된 파일들이 있는 곳을 의미하고 Staging Area 는 버전을 만들려고 파일들을 올려 놓는 곳으로 이해하시면 되고, Repository 는 만들어진 버전들이 저장되는 곳이라고 이해하시면 되겠습니다.
이제 파일을 직접 만들어서 버전을 만들어보겠습니다.
우선 현재 제가 있는 hello-git-cli 폴더에는 아무런 파일도 없습니다. 여기에 txt 파일을 하나 만들어 보겠습니다.
nano hello1.txt
이 명령은 window 에서는 linux를 설치하지 않는 이상 정상작동하지 않습니다. 그래서 우리는
notepad hello1.txt
이 코드를 사용해서 txt 파일이 하나 만들겠습니다.
해당 명령을 실행하면
메모장 프로그램이 열리게 되고 '1' 이라고 입력한 후 파일을 저장하고 닫겠습니다.
type hello1.txt
type hello1.txt 는 해당 파일 안에 있는 내용을 출력해주는 명령입니다. linux 에서는 cat 입니다.
txt 파일 안의 내용이 정상적으로 출력되는 것을 확인할 수 있습니다.
자, 이렇게 파일을 수정해서 만들었고, 이제 여러분이 git 을 사용하면서 가장 많이 사용할 명령이 나옵니다.
git status
git 에게 지금 상태가 어떠냐고 묻는 것이 git status 입니다. No commits yet 은 아직 버전이 없다는 것을 의미합니다. Untracked fileds 는 지금 추적되지 않고 있는 파일이 hello1.txt 라고 알려주고 있습니다. git 은 여러분이 명시적으로 이 파일을 버전관리 할 거야! 라고 알려주어야 합니다. 그렇지 않으면 git 은 알려주지 않은 파일들을 없는 셈으로 치게 됩니다. 그래서 hello1.txt 파일은 아직 git 에게 관리하라고 명령하지 않았기 때문에 Untracked 상태인 것이죠.
우리가 hello1.txt 파일을 버전으로 만들기 위해서는 위에서 말씀 드렸던 것처럼 Staging Area 에 올려야 합니다. 그때 사용하는 명령이 add 입니다.
git add hello1.txt
git add hello1.txt 를 실행해 주고 나서 git status 를 실행해보면 이제는 Untracked files 상태에 있는 것이 아니라 Changes to be committed 상태가 됩니다. 여기서 commit 은 버전과 같은 뜻입니다.
즉, 변경 사항들이 git add 명령을 통해서 버전이 될 상태가 되었다는 뜻입니다.
이 상태에서 git 에게 버전을 만들어! 하는 명령이 바로
git commit
git commit 입니다. 지금 이 상태에서 Enter 를 입력하면 editor가 실행됩니다. 거기서 여러분이 편리하게 작업을 진행할 수 있습니다. 그런데, 그것이 귀찮아서 보통은 다음과 같이 적습니다.
git commit -m "Message 1"
git commit 한 칸 띄고 -m "Message 1" 이라고 적습니다. 그리고 엔터를 치면 버전이 생성이 됩니다. 그러면 hello1.txt 파일은 Staging Area 에서 Repository로 넘어가게 됩니다. git status 를 입력하면 이제 다음과 같이 출력됩니다.
nothing to commit, working tree clean 즉, 현재 버전이 최신 버전이고 아무것도 수정된 것이 없다는 것을 의미합니다. 버전이 잘 만들어 졌는지 확인하려면 다음과 같은 명령이 필요합니다.
git log
git log 라는 명령은 일종의 역사를 의미합니다. git 으로 생성된 버전들의 역사를 보고 싶다는 명령입니다.
Message 1 이라고 하는 버전에 대한 설명이 있는 이 버전은 ben 이라는 사람이 만들었고 이 버전의 고유한 값은 저것이고 또 이 버전이 언제 만들었다라는 내용이 아주 상세하게 나오는 것을 알 수 있습니다.
자 그럼 연습 삼아서 버전을 한번 만들어 봅시다.
notepad hello1.txt
notepad hello1.txt 명령을 통해 txt 파일을 열고 2를 추가해준 후 저장 후 종료합니다. 그리고 나서
git status
git status 를 실행해주면 Changes not staged for commit 으로 hello1.txt 가 보이게 됩니다. Staging 에 올라가지 않은 수정사항이 Working Tree 에 있네요! 라고 git 이 알려주는 것을 볼 수 있습니다.
이때 버전을 만들기 위해서 우리는 다음과 같은 명령을 실행해 줍니다.
git add hello1.txt
git add 로 우선 hello1.txt 를 Staging Area 로 올려 버전을 만들 준비를 해줍니다.
git status 를 통해서 Changes to be committed 상태에 hello1.txt 가 들어가 있는 것을 볼 수 있습니다.
git commit -m "Message 2"
git commit -m "Message 2" 명령을 통해 Staging Area 에 올라가 있는 파일들을 "Message 2" 라는 설명과 함께 버전으로 만들었습니다.
git status 를 보면 nothing to commit, working tree clean 상태인 것을 알 수 있습니다.
git log
git log 를 실행해보면 우리가 생성한 버전들의 역사를 모두 볼 수 있습니다.
이렇게 해서 우리는
Working Tree / Staging Area / Repository 에 대한 개념과 git CLI 를 활용하여 버전을 만드는 것에 대해서 배웠습니다.
고생하셨습니다. 매우 중요한 내용들이니 잊지마시고 꼭 복습해보시길 바랍니다!
출처 : https://opentutorials.org/course/3839
'[생활코딩] 형상관리 > GIT2 CLI' 카테고리의 다른 글
GIT2 - checkout 과 시간여행 (0) | 2023.05.10 |
---|---|
GIT2 - 버전 간의 차이점 비교 (0) | 2023.05.10 |
GIT2 - 여러개의 파일을 버전으로 만들기 (0) | 2023.05.10 |
GIT2 - 설치 (0) | 2023.05.09 |
GIT2 - 수업소개 (0) | 2023.05.09 |