git 기본 개념과 기본적인 사용 방법에대해 정리하겠다.
방학 비교과 수업 정리용으로 작성하는 것이고 이론적 내용보단 기본 개념 이해와 실습 쪽에 초점을 맞춰볼까 한다.
● git 이란?
git을 가장 간단하게 표현하면 (소스코드의)변경 이력을 남기면서 효율적인 작업을 돕는 분산 버전 제어 시스템이다.
즉 코드를 작성하는 것에 있어 언제 무엇을 왜 수정했는지 알기 쉽게 해주는 역할을 하는 것이다.
이전에 git은 github을 통해 들어봤는데 일단 기본 개념부터 배우는 것이기에 오늘은 배운 내용인 git에만 집중하겠다.
● git 구성
git은 크게 3가지 구역으로 나눌 수 있다.
수정할 파일이 저장되어 있는 디렉터리인 작업 공간
수정된 파일들을 저장소로 옮기기 전 모아놓는 스테이지
수정된 파일이 최종 저장되는 저장소
저장소는 로컬 저장소와 원격 저장소로 나뉘는데
익히 알고 있는 github가 원격 저장소이다. 이에 대해선 다음 시간에 다루고 오늘은 로컬 저장소에 관해 정리하겠다.
● git 파일의 상태
각 파일의 위치에 따라 파일의 상태가 나뉜다.
여기서 파일은 git을 통해 관리하고 싶은 소스코드 파일을 의미한다.
git에 코드를 올리는 것을 commit이라 한다.
commit을 하게 되면 (로컬)저장소에 코드가 저장되는 것이다.
보통 commit을 할 때에는 서로 연관 있는 코드를 같이 묶어 해주는데, 이를 스테이지를 통해 해준다.
즉, 먼저 commit 할 파일들을 스테이지에 올려놓고 한번에 commit 해주는 것이다.
이 과정은 필수적인 것으로 commit 전에는 항상 스테이지를 거쳐야 한다.
이때 git에서 관리가 안 되는 그냥 만들어져 있는 파일을 modified 상태
스테이지로 옮겨진 파일을 staged 상태
스테이지에서 저장소로 옯겨 진 상태를 commited 상태라고 한다.
● git 실습
처음 개념만 들었을 때에는 잘 이해가 되지 않았고 실습하며 약간의 감을 잡은 것 같다.
그래서 실습한 것을 처음부터 복기하며 다시 한번 정리 해보려 한다.
git 설치와 기본 사용자 설정은 그냥 넘어가도록 하겠다.
실습은 git 설치 시 같이 깔린 git bash를 이용하여 하였다.
● git 실습 : 작업공간 생성
먼저 관리할 파일들을 만들 디렉토리가 필요하다.
디렉토리 이름은 gitreview_test로 만들었다.

그 후 만들어진 디렉토리로 이동을한다.

그리고 이 디렉토리를 작업 공간으로 지정 해 주기 위해 git init을 해준다.

● git 실습 : 파일 생성
그럼 여기서 관리할 파일들을 만들어 주면된다.
나노 편집기를 사용하여 hello.c 파일을 만들어 주었다.


● git 실습 : git status
파일들의 상태를 알 수 있는 명령어는 git status 명령어로 볼 수 있는데
파일 몇가지를 더 만든 후 명령어를 찍어보면 아래와 같이 나온다.

위에서 보면 commit된 파일은 없고 untracked 파일만 있다. untracked 파일은 아직 git에 입력 되지 않은 파일로
git이 관리하지 않는 파일이다.
(.gitignore 파일에 관해서는 뒤에 정리하겠다.)
● git 실습 : 스테이지로 이동
그럼 이제 스테이지로 파일을 옮겨보겠다. 스테이지는 위에서 설명했듯이 파일을 commit 하기 전 파일들을
모으는 역할을 한다.
스테이지로 옮기는 명령어는 git add 파일 이름이다.
.gitignore을 먼저 스테이지로 옮겨 보면 아래와 같다.

(여기 뜨는 경고 문구는 gitbash를 사용해 윈도우에서 리눅스 기반 명령어를 사용해 나타나는 경고 정도로만 정리하겠다.)
add를 해준 후 git status를 해주면 아래와 같다.

아직 commit된 파일은 없고 commited로 바뀔 수있는 파일이 하나 생겼다.
● git 실습 : commit
이 상태에서 git commit 명령어를 사용하면 스테이지에 있는 모든 파일이 commit, 즉 저장소로 이동하게 된다.
현재 .gitignore를 commit 해보면


위와 같은 창이 나오는데 여기에 코드에 대한 설명을 적으면 된다.
간단하게 make ignore file이라 적었다.
여기서 git status를 하면 위에 있던 no commit yet이 사려져있는걸 알 수 있다.

그럼 빠르게 나머지 파일 두 개도 한번에 commit 해주도록 하겠다 (당연히 스테이지로 먼저 옮긴후 commit 해야한다.)
● git 실습 : 수정사항 관리
이제부터 git을 사용하는 이유인 수정에 관하여 관리를 해볼 것이다.
현재 위에서 만든 3개 파일은 모두 commit되어있는 상태이다.
이 상태에서 main.c를 편집기를 이용하여 수정해 보겠다.

코드는 위처럼 수정 하였고

git status를 해보면 main.c가 다시 commit 되지 않은 상태가 되어있다.
이 상태에서 commit 전과 후의 수정된 내용을 볼 수 있는 명령어가 git diff이다.

이처럼 추가된 내용을 초록색을 표시해준다. 삭제는 안해서 아나왔으나 삭제한 코드는 빨간색으로 표시된다.
● git 실습 : git 히스토리
이제 git의 가장 중요한 역할인 git히스토리 보는법에 정리하겠다.
git 히스토리란 위에서 수정한 사항들을 한눈에 관리하기 쉽도록 볼수 있는것으로 git gui를 사용했다.


git gui에서 open existing repository 를 누르고 작업 공간으로 지정해준 디렉토리(파일)를 선택 해준다.
그리고 repository 메뉴에서 visualize all branch history 를 누르면 아래와 같은 화면이 나온다.

위에서 수정한 사항들을 나타낸 것이다.

코드를 누르면 아래 각 수정된 코드를 확인할 수 있다.
지금까지 git에서 제일 중요한 내용들만 정리해 보았다.
외에도 자주 쓰이는 기능과 세세한 것들이 더 있는데 이는 다음에 정리해 보겠다.
'git' 카테고리의 다른 글
| [git] git 원격저장소 (0) | 2022.07.12 |
|---|---|
| [git] git branch (0) | 2022.07.10 |