git

git 이란 무엇일까? / git 을 사용해보자

Oscar:) 2023. 8. 14. 00:34

 

git 공식 로고

 

 

 

git이란 무엇일까?

 

 

 

● 리누스 토르발스가 개발한 버전 관리 시스템

* 리누스 토르발스 : 리눅스 창시자

 

버전 관리 시스템이란, 소스 코드를 보다 효율적으로 관리하기 위한 시스템이다.

 

문서 작성 시, 동일한 내용의 파일을 여러번 수정하고 저장한 경험이 있을 것이다.

ex)
최종본.txt
최종본(2).txt
진짜_최종.txt
진짜_끝_.txt
진짜_찐마지막.txt
위에거_다아니고_이게_진짜_최종.txt

 

 

git을 이용한 버전 관리는, 위 처럼 파일을 수정·저장 등 관리할 때마다

언제, 어떤 것을 수정했는지 등을 보다 편리하고 명확하게 기록·관리할 수 있게끔 해준다.

 

 

 

· git 공식 홈페이지에서는 다음과 같이 소개하고 있다.

출처 : git-scm.com (git 공홈)

 

번역하자면 다음과 같다.

 

Git은 작은 프로젝트부터 매우 큰 프로젝트까지 모든 것을 신속하고 효율적으로 처리할 수 있도록 설계된 무료 오픈 소스 분산 버전 제어 시스템이다.

Git은 배우기 쉽고 번개처럼 빠른 성능을 보이며, 작은 공간만을 차지한다.
저렴한 로컬 분기, 편리한 준비 영역 및 여러 워크플로우와 같은 기능으로 Subversion, CVS, Perforce & ClearCase 와 같은 SCM 도구를 능가한다.

 

 

공식 소개 문구에서 다른 도구들과 비교하는 모습이

동종업계에서의 자신감을 보여주는 모습이었다.

 

 


 

 

 git의 구조와 특징

 

 

 

● 로컬 저장소 기반

*로컬 저장소는 사용자의 PC안 어딘가라고 생각하면 이해하기 쉽다.

 

전체 데이터를 작업 폴더에 넣어서 관리하는 형식이다.

 

버전 관리를 하고 싶은 파일이 있는 폴더에 로컬 저장소를 생성하고,

해당 저장소를 통해 작업 폴더의 파일들을 관리할 수 있다.

 

 

● 오픈 소스

*오픈 소스 : 소프트웨어를 개발하는 과정에 필요한 소스 코드 등을 누구나 열람할 수 있도록 공개한 자원.

경우에 따라, 공개의 영역을 넘어선 2차 창작 & 상업적 배포까지 허가하기도 한다.

 

git은 오픈 소스이며, 따라서 누구나 무료로 열람하고 사용할 수 있다.

 

 


 

 

git의 장점

 

 

 

 

git을 제외하고도 버전 관리를 할 수 있는 타 프로그램도 물론 존재한다.

그렇다면 여러 버전 관리 프로그램 중에서도 git을 사용하는 이유가 궁금하기 마련이다.

 

 

● 로컬 저장소를 사용한다.

 

로컬 저장소를 사용한다는 것은 git의 기본 구조이자 특징에서 그칠 수 있지만,

이 때문에 많은 장점이 부각된다.

 

 

- 속도가 빠르다.

 

중앙 서버와 연동하여 작업하지 않고, 각각의 개발자가 모두 분산 처리 서버의 주인이 되는 셈이므로,

서버가 직접 해야 될 일이 많이 줄어든다.

 

 

- 오프라인에서도 작업이 가능하다.

 

기본 작업은 로컬 저장소에서 진행하기 때문에

원격저장소를 이용하지 않을 때에는 온라인이 아니더라도 지장이 없다.

 

 

- 서버에 문제가 생겨도 개발이 지속될 수 있다.

 

위와 마찬가지로, 기본 작업은 로컬 저장소에서 진행하기 때문에

중앙 서버에 문제가 생겨도 작업에 지장이 없다.

 

 

● 스테이징 상태를 지원한다.

 

- 커밋하기 전, 검토할 수 있는 중간 영역을 제공한다.

 

아래에  'git 사용법(명령어)' 탭에서 알아보겠지만,

버전 관리 대상의 파일은 '작업트리' > '스테이지' > '저장소' 순서로 이동한다.

'작업트리' > '저장소' 처럼 중간 과정이 없는 것보다 유연한 작업을 진행할 수 있다.

 

 

● 많은 툴에서 자체 지원한다.

 

- Android Studio, VS Code, Eclipes 등 대부분의 개발자용 툴에서

git을 자체 지원하거나 git 전용 플러그인을 제공한다.

 

이는 버전 관리 프로그램을 별도로 구동해야하는 불편함도 줄여주며,

git의 영향력도 느낄 수 있다고 생각한다.

 

 


 

 

✅ git 을 사용하는 기업 & 프로젝트

 

 

 

출처 : git 공홈

 

버전 관리 시스템을 고민하는 개발자들에게 git의 장점을 열심히 설명하는 것보다,

'유명한 기업들이 git을 사용중이다' 라는

위 자료를 보여주는 게 훨씬 더 효과적일 수 있다.

 

 

유명한 기업들의 사용 여부를 떠나, git의 실 사용자 수도 주목해 볼 만하다.

 

MS사의 GitHub(git 원격저장소) 2023년 1분기 결산에 따르면

GitHub 사용자 수가 9000만 명에 도달했다고 한다.

 

전 세계 인구가 80억 명에 도달한 시점에서 보면,

90명 중 1명은 git을 사용한다고 보아도 무방하다.

 

물론 전 세계에 개발자가 저렇게 많지는 않다.

개발 공부를 하며 git을 처음 접한 사람들은 특이하게 생각할 수도 있지만,

외국의 일부 가정에서는 git으로 가계부를 관리하기도 하고,

학생들이 발표 자료를 git으로 관리하기도 한다고 한다.

 

 


 

 

git 기본 사용법 (명령어)

 

 

 

이제 git을 사용해 보는 일만 남았다.

git을 사용하는 간단한 작업들을 그림과 함께 보며 이해하면 좋겠다.

 

git은 다양한 환경에서 사용 가능하기 때문에, 각자 환경에 맞게끔 설치 & 세팅하기 바란다.

 

설치할 수 있는 공식 홈페이지는 아래 남겨놓겠다.

 

 

Git

 

git-scm.com

 

필자는 Window를 사용하기 때문에, git bash를 함께 설치하여 사용했다.

 

 

 


 

● git init

 

git을 초기화하는 과정이다.

해당 위치(주로 폴더가 될 것이다)에 git 로컬 저장소를 생성해주는 과정이라고 생각하면 쉽다.

 

 

바탕화면에 WorkingDirectory 라는 폴더를 생성해 주었고,

bash에서 해당 폴더로 이동한 후, git init 명령어를 입력하였다.

 

현재 상황은 위 그림과 같다.

 

WorkingDirectory == 작업 폴더이며, 해당 폴더에

git이 초기화되면서 스테이지와 저장소가 생성되었다고 볼 수 있다.

 

 

해당 폴더에 들어가보면 아무것도 안 보일 수도 있지만,

숨김 항목 표시에 체크를 해주면 반투명한 '.git' 폴더를 확인할 수 있다.

 

 


 

● git status

 

git의 현재 상태를 확인할 수 있는 명령어다.

 

상태를 확인하기 전에, 작업 폴더에 임의의 텍스트 파일을 생성해보자.

 

 

Oscar 라는 이름의 메모장 파일을 생성하고 저장했다.

 

이제 bash에서 git status를 입력해보자.

 

 

Untracked file 이라며 빨간 글씨로 해당 파일 이름이 표시된다.

 

현재 상황은 위 그림과 같다.

 

파일을 생성만 해주었기 때문에,

파일이 작업 폴더에만 위치해 있다고 생각하면 된다.

 

 


 

● git add

 

작업 폴더에 있는 파일을 스테이징하는 과정이다.

 

git add '스테이징할 파일 이름' 을 입력해보자.

 

 

이번엔 초록색 글씨로 커밋 대기중인 파일이 표시되었다.

 

현재 상황은 위 그림과 같다.

 

작업 폴더에 있는 파일이 스테이지로 이동되었다고 볼 수 있다.

 

 


 

● git commit -m

 

스테이지에 있던 파일을 commit 하여 저장소로 이동시키는 과정이다.

commit 할 때에는 반드시 commit message를 작성해 주어야 한다.

 

git commit -m "commit message" 를 입력해보자.

 

 

커밋 메세지와 함께 파일을 커밋하였고,

git status 명령어로 다시 한 번 git의 상태를 확인하였다.

 

현재 상황은 위 그림과 같다.

 

스테이지에 있던 파일이 저장소로 이동되었다고 볼 수 있다.

 

 


 

● git commit -am

 

작업 폴더에서 스테이지를 거치지 않고,

곧바로 저장소로 커밋할 수 있는 명령어다.

 

메모장 파일을 열고 텍스트를 작성해 준 뒤, 파일을 저장해 보자.

 

 

git status를 통해 다시 한 번 git의 상태를 확인해본다.

 

 

'Oscar.txt' 파일이 수정되었기 때문에,

다시 빨간 글씨로 표시된 것을 확인할 수 있다.

 

 

이제 git commit -am "commit message" 를 입력해보자.

 

현재 상황은 위 그림과 같다.

 

작업 폴더에서 스테이지를 별도로 거치지 않고,

곧바로 저장소로 이동되었다고 볼 수 있다.

 

 


 

● git log

 

저장소에 커밋된 버전을 확인할 수 있는 명령어다.

 

 

커밋한 계정, 일시, commit message 를 한 눈에 볼 수 있다.

최신 log가 최상단에 표시된다.

 

 


 

● git push & git pull

 

push & pull을 사용하려면 GitHub에 대한 개념도 알아야 하는데,

이번 포스팅에서는 git만을 다루었기 때문에 로컬 저장소에 대한 개념만 설명했다.

 

하지만 git 명령어를 공부하는 과정에서 push & pull도 중요한 과정이기 때문에 추가했다.

 

다음 포스팅에서 다룰 GitHub(원격 저장소) 개념을 간단히 설명하자면,

로컬이 아닌 원격 저장소이기 때문에, 온라인 상태에서만 사용할 수 있고

로컬 저장소에 있던 파일을 원격 저장소에 올리기/내려받기 할 수 있는 개념이라고 생각하면 쉽다.

 

 

로컬 저장소에 있는 파일을 원격 저장소로 push 하거나,

원격 저장소에 있는 파일을 로컬 저장소로 pull 하는 과정이다.

 

GitHub에 대한 자세한 내용은 다음 포스팅에서 다뤄보겠다.

 

 


 

● git branch & merge

 

*branch : 나뭇가지, 가지를 치다, 분기하다 등

*merge : 병합하다, 융합하다 등

 

별도의 branch를 생성하지 않았다면,

master 라는 1개의 branch를 사용하고 있었을 것이다.

 

git에서는 여러 branch를 생성하여 작업을 하고,

원하는 시점에 merge하여 병합하는 과정을 수행할 수 있다.

 

branch & merge 를 간단하게 표현하면 위 그림과 같다.

 

 

· branch 생성 / 확인 / 이동하기

 

- git branch '브랜치 명' 을 입력하여 새로운 브랜치를 생성할 수 있다.

- git branch 명령어를 입력하면 브랜치 목록을 확인할 수 있다.

- git checkout '브랜치 명' 을 입력하면 브랜치를 이동할 수 있다.

 

 

상시로 기본 상태표시줄 우측 소괄호 안에 현재 위치한 branch가 표시된다.

git checkout test 입력 후에는 소괄호 안의 현재 branch가 변경된 것을 확인할 수 있다.

 

 

· branch 생성함과 동시에 이동하기

 

git checkout -b '브랜치 명' 을 입력하면 브랜치 생성&이동을 동시에 할 수 있다.

 

 

 

· git merge '브랜치 명'

 

위에서 생성해 주었던 hotfix branch를 master branch에 merge 해보자.

 

 

master branch로 이동한 뒤, hotfix branch를 merge 해 주었다.

 

 

· branch 삭제하기

 

master branch에 병합이 되었고, 더 이상 hotfix branch가 필요 없다면

해당 branch를 삭제해 주어야 한다.

 

git branch -d '브랜치 명' 명령어를 입력하면 브랜치를 삭제할 수 있다.

 

 

branch 삭제 위&아래로 branch를 확인하는 명령어를 입력하였다.

branch가 성공적으로 삭제된 것을 확인할 수 있다.

 

 

 


 

 

 

여기까지 git에 대해 알아보는 시간을 가져보았다.

다음 포스팅에서는 GitHub에 대해 알아보겠다.

'git' 카테고리의 다른 글

git flow / git branch 관리하기  (0) 2024.03.13
GitHub란 무엇일까? / GitHub Service  (4) 2023.08.16