Git에서는 문서를 수정할 때마다 간단한 메모와 함께 수정 내용을 스냅숏으로 찍어서 저장 (= version)
문서를 수정하면서 수정 내용을 버전으로 저장, 저장한 버전을 사용해 이전 내용으로 되돌리는 방법을 알아보자!
1️⃣ Git 저장소 만들기
> 사용자 컴퓨터에 저장소를 만들고 시작해보자.
저장소를 만들고 싶은 디렉터리로 이동해서 git을 초기화하면 그때부터 해당 디렉터리에 있는 파일들을 버전 관리할 수 있다.
1) Git 초기화하기 - git init
Git 저장소를 만들 디렉터리 새로 만들기
$ mkdir hello-git
$ cd hello-git
디렉터리에 저장소 만들기 위해 Git을 사용할 수 있도록 디렉터리 초기화
$ git init
→ ls 명령을 사용해서 디렉터리 안을 보면 .git 디렉터리가 생성되어있다.
이 디렉터리가 git을 사용하면서 버전이 저장될 저장소(repositoy, 레파지토리)
2️⃣ 버전 만들기
프로그램 개발에서 수정 내용이 쌓이면 새로 번호를 붙여서 이전 상태와 구별. 번호 등을 통해 구별된 것을 버전이라고 한다.
👾 스테이지(stage)와 커밋(commit) 이해하기
> git은 어떻게 파일 이름은 그대로 유지하면서 수정 내역을 기록할 수 있는 것일까?
작업 트리
파일 수정, 저장 등의 작업을 하는 디렉터리. (hello-git 디렉터리)
스테이지
버전으로 만들 파일이 대기하는 곳
저장소
스테이지에서 대기하고 있던 파일들을 버전으로 만들어 저장하는 곳
→문서를 수정하고 저장하면 이 파일은 작업 트리에 있음.
수정한 파일 중 버전으로 만들고 싶은 것을 스테이지에 넣어준다.
스테이지에서 git에게 commit 명령 내리면 새로운 버전이 생성되고 스테이지에 있던 모든 파일이 저장소에 저장
👾 작업 트리에서 vim으로 문서 수정하기
$ git status //git 상태 확인
==========================================
//상태 메세지
on branch master //현재 master 브랜치에 있음
No commits yet //아직 commit한 파일이 없음
nothing to commit //현재 commit할 파일이 없음
==========================================
$ vim hello.txt //새로운 파일 생성
$ git status //git 상태 확인
=============================================================================
//상태 메세지
on branch master //현재 master 브랜치에 있음
No commits yet //아직 commit한 파일이 없음
Untracked files:
(use "git add <file>..." to include in what will be commited)
hello.txt
nothing added to commit but untracked files present (use "git add" to track)
=============================================================================
👾 수정한 파일을 스테이징하기 - git add
위에선 vim으로 작업 트리에서 문서 파일을 만들었다.
생성한 파일 혹은 수정한 파일을 스테이지에 추가하자. (git에게 버전 만들 준비를 하라고 알려주는 것 = "staging")
$ git add hello.txt
$ git status
=================================================
//상태 메세지
on branch master //현재 master 브랜치에 있음
No commits yet //아직 commit한 파일이 없음
changes to be committed:
(use "git rm --cached <file>..." to unstage)
new file: hello.txt
=================================================
이렇게 생성된 hello.txt가 스테이지에 추가되었다. [버전 만들 준비 완료!]
👾 스테이지에 올라온 파일 커밋 - git commit
스테이지에 있는 파일로 버전을 만들 수 있다.
commit 할 때는 그 버전에 어떤 변경 사항이 있었는지 확인하기 위해 메시지를 함께 기록해둬야 한다.
$ git commit -m "message1"
===============================
1 file changed, 1 insertion(+) //file 1개 변경, 1개 추가
...
===============================
$ git status
======================================
On branch master
nothing to commit, working tree clean
======================================
$ git log //버전이 제대로 만들어졌는지 확인... 저장소에 저장된 버전 확인
===================================
Author: nyeong <nyeong@naver.com>
Date: xxx xx xx xxx xxxx xxxx
message1
===================================
👾 스테이지과 커밋 한번에 처리하기 - git commit -am
> 이 방법은 한 번이라도 커밋한 적이 있는 파일만 가능하다
$ vim hello.txt //수정하기
$ git commit -am "message2" //hello.txt는 전에 commit 한 적 있으니까 한번에 가능
$ git log
===================================
commit /////////////////////////\
Author: nyeong <nyeong@naver.com>
Date: xxx xx xx xxx xxxx xxxx
message2
commit //////////////////////////
Author: nyeong <nyeong@naver.com>
Date: xxx xx xx xxx xxxx xxxx
message1
===================================
3️⃣ commit 내용 확인하기
> 버전을 관리하기 위해 지금까지 어떤 버전을 만들었는지 알 수 있어야 한다. 버전마다 어떤 차이가 있는지도!
👾 commit 기록 자세히 살펴보기 - git log
지금까지 버전이 나타나고 설명도 함께!
(HEAD -> master) : 가장 최신 버전
👾 변경 사항 확인하기 - git diff
작업 트리에 있는 파일과 스테이지에 있는 파일을 비교하거나, 스테이지에 있는 파일과 저장소에 있는 최신 commit을 비교해서 수정한 파일을 commit 하기 전에 최종적으로 검토 가능!
hello.txt : 1 2
hello.txt : 1 two (수정)
$ git status
=============================================================================
On branch master
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git checkout -- <file>..." to discard changes in working directory)
modified: hello.txt
no chnaged added to commit (use "git add" and/or "git commit -a")
=============================================================================
//hello.txt 파일 수정되었고, 아직 스테이징 상태가 아니라고 나온다.
$ git diff
========================================================================
warning: LF will be replaced by CRLF in hello.txt
The file will have its original line endings in your working directory
diff --git a/hello.txt b/hello.txt
index 1191247..0b66db0 100644
--- a/hello.txt
+++ b/hello.txt
@@ -1,2 +1,2 @@
1
-2 //2 삭제되고
+two //two 추가되었다
========================================================================
참고 서적
Do it! 지옥에서 온 문서관리자 깃&깃허브 입문
생활코딩 강의에서 52개를 엄선, 한 권 안에 자주 쓰는 기능은 모두 담았다. 문서 지옥, 깃&깃허브로 하루 안에 탈출한다! 대학생, 개발자, 일반 사무직까지! 문서 지옥에 빠진 모두를 위한 깃&깃
digital.kyobobook.co.kr
'Github' 카테고리의 다른 글
[GitHub] Pull Requests는 무엇이고 어떻게 사용하는걸까?? (0) | 2022.09.28 |
---|---|
[GitHub] issues는 무엇이고 어떻게 사용하는걸까?? (0) | 2022.09.28 |
[GitHub] Git으로 버전 관리하기(2/2) (1) | 2022.08.24 |
[Github] 이번엔 진짜 마스터한다, GitHub (1) | 2022.08.24 |