[오픈소스SW개발] Git Basics

용어 정리

-Version Control System
코드를 변경하거나 관련된 파일을 변경할 때마다 각각의 버전을 기록해서 저장소에 관리하는 시스템이다.

-Repositories(저장소)
파일들을 저장하는 장소이다. 저장소에 있는 파일을 직접적으로 수정하는 것이 아니라 저장소에 저장되어 있는 파일 버전들을 복사해서 저장소에 반영한다. 일반적으로 소스 코드나 빌드 설정 파일, 이미지, 텍스트들을 저장할 수 있다.

-Git
리누스 토발즈가 만든 VCS(버전 관리 툴)이다. 사용자가 작성한 소스 코드 등을 압축해서 저장소에 저장해 둔 다음 변경 이력을 열람하거나 불러올 수 있도록 만든 것이 깃이다.

-커밋
의미 있는 변경 작업들을 저장소에 기록하는 것을 뜻한다.

깃의 시스템

세 가지 영역으로 구분된다.

-Working directory
사용자가 작업하고 있는 공간이다. 에디터를 통해 직접적으로 바라보거나 수정하는데, 이때 수정 내용들은 저장소에 바로 반영이 되지 않는다.

-Staging Area
저장소에 반영할 파일들을 선택하고 이 파일들의 커밋을 준비하는 공간이다. 선택한 파일들의 변경 내용이 Staging Area에 저장된다.

-Repository(local)
커밋을 하면 Staging Area에 있던 내용들이 Repository에 버전 단위로 반영된다.

파일의 Lifecycle


-untracked
아직 tracking이 되지 않은 파일로, 기존에 존재하던 프로젝트에서 git을 초기화하거나 파일을 새로 만들면 untracked 상태이다.

-unmodified
repository에 저장된 파일과 working directory에 저장된 파일이 완벽히 똑같을 때의 상태이다.

-modified
checkout된 이후 수정사항이 있지만 stage가 되지 않은 상태이다. modified된 파일만 staging area로 옮겨갈 수 있다.

-staged
modified 상태의 파일을 커밋에 반영하기 위해 staging area에 올린 상태이다.

명령어 정리


-git add
working directory에서 만들거나 수정된 파일을 staging area에 옮기는 명령어이다.

-git commit
스테이지에 올라온 파일을 repository에 저장하는 명령어이다. 보통 -m을 사용하여 커밋 메시지와 함께 저장한다.

-git status
현재 깃 저장소의 파일 상태를 확인할 수 있다.

-git log
수정한 사람, 수정한 시간, 수정 내역을 알 수 있다.

-git rm
파일을 지우고, 그 파일을 스테이지에 올리는 과정까지 수행한다.

-git restore
수정되기 전 커밋된 상태로 되돌린다.

실습-구구단 프로그램 저장하기

-유저 정보 세팅

user@DESKTOP-BASIT38 MINGW64 ~/Documents/git
$ git config --global user.name "Minkyung Ko"

user@DESKTOP-BASIT38 MINGW64 ~/Documents/git
$ git config --global user.email "[email protected]"

user@DESKTOP-BASIT38 MINGW64 ~/Documents/git
$ git init
Initialized empty Git repository in C:/Users/user/Documents/git/.git/

-소스 코드 추가 (5단 출력)

user@DESKTOP-BASIT38 MINGW64 ~/Documents/git (master)
$ git commit -m "Adding files"
[master (root-commit) 7e391de] Adding files
 1 file changed, 6 insertions(+)
 create mode 100644 aa.cpp

-소스 코드 변경하고 커밋하기 (1단~9단 출력으로 변경)

user@DESKTOP-BASIT38 MINGW64 ~/Documents/git (master)
$ git status
On branch master
Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git restore <file>..." to discard changes in working directory)
        modified:   aa.cpp

no changes added to commit (use "git add" and/or "git commit -a")

user@DESKTOP-BASIT38 MINGW64 ~/Documents/git (master)
$ git add aa.cpp

user@DESKTOP-BASIT38 MINGW64 ~/Documents/git (master)
$ git commit -m "Modifying files"
[master 204077b] Modifying files
 1 file changed, 6 insertions(+), 3 deletions(-)

-파일 삭제하고 커밋하기

user@DESKTOP-BASIT38 MINGW64 ~/Documents/git (master)
$ git status
On branch master
Changes not staged for commit:
  (use "git add/rm <file>..." to update what will be committed)
  (use "git restore <file>..." to discard changes in working directory)
        deleted:    aa.cpp

no changes added to commit (use "git add" and/or "git commit -a")

user@DESKTOP-BASIT38 MINGW64 ~/Documents/git (master)
$ git add aa.cpp

user@DESKTOP-BASIT38 MINGW64 ~/Documents/git (master)
$ git commit -m "Deleting files"
[master e086df6] Deleting files
 1 file changed, 9 deletions(-)
 delete mode 100644 aa.cpp

-로그 기록

user@DESKTOP-BASIT38 MINGW64 ~/Documents/git (master)
$ git log
commit e086df612a48342476e1325ed7580e91aad7e20f (HEAD -> master)
Author: Minkyung Ko <[email protected]>
Date:   Sun Mar 20 21:57:38 2022 +0900

    Deleting files

commit 204077b4fec5ce40469a1ef3776cfa0d093562b2
Author: Minkyung Ko <[email protected]>
Date:   Sun Mar 20 21:55:12 2022 +0900

    Modifying files

commit 7e391de393739e0cfb99b96f22d48dae4938cca2
Author: Minkyung Ko <[email protected]>
Date:   Sun Mar 20 21:52:02 2022 +0900

    Adding files

세 개의 커밋 기록을 확인할 수 있다!!!

좋은 웹페이지 즐겨찾기