Github

[GitHub] Git으로 버전 관리하기(1/2)

녕이 2022. 8. 24. 17:02
728x90

 

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 추가되었다
========================================================================

 

 

 

 

 

참고 서적

https://digital.kyobobook.co.kr/digital/ebook/ebookDetail.ink?selectedLargeCategory=001&ejkGb=EBK&barcode=4801163031223 

 

Do it! 지옥에서 온 문서관리자 깃&깃허브 입문

생활코딩 강의에서 52개를 엄선, 한 권 안에 자주 쓰는 기능은 모두 담았다. 문서 지옥, 깃&깃허브로 하루 안에 탈출한다! 대학생, 개발자, 일반 사무직까지! 문서 지옥에 빠진 모두를 위한 깃&깃

digital.kyobobook.co.kr

 

 

728x90