Git이란 무엇일까?

20220824

git 문서 사이트

  1. git이란 무엇일까

  2. git github 차이

  3. git repo란?

  4. git의 3가지 구역

  5. master? main? 둘의 차이점은 뭘까?

  6. 글을 마치며

  1. git이란 무엇일까


git이란 분산형 버전 관리 시스템(Version Control System) 의 한 종류이다.

git은 개발자가 어떤 프로젝트를 만들때 각각의 타임라인 별로 프로젝트를 저장해

버전을 관리하기 위해서 사용되는 시스템이다.

git을 사용하면 프로젝트를 저장, 복사, 백업, 되돌리기, 여러 브랜치를 사용할수 있다.

깃은 리누스 토르발스가 처음 개발한 것이다. 리누스 토르발스는 linux도 개발했는데

자신의 이름인 리누스를 따서 리눅스라는 이름을 지었다.

  1. git github 차이


깃과 깃허브의 정의는

깃은 로컬 파일의 변경사항을 기록하고 해당 파일에 대한 여러 사용자

간의 작업을 조율하기 위한 버전 관리 시스템(VCS : Version Control System)이다.

깃허브는 깃을 클라우드 방식으로 원격 저장소이다.

이 말을 들으면 이게 무슨 소리야 하실분들을 위해서 제가 이해한 바를 설명한다.

깃은 로컬 환경에서 버전관리를 위해 사용되는 프로그램이다. 즉 인터넷이 끊기거나

누구와도 협업을 하지 않고도 혼자서 버전관리하면서 프로젝트를 만들수가 있다.

깃허브는 프로젝트를 웹허브에 올려서 다른 사람들과 협업을 하거나 자신의

노트북이 뿌셔져도 깃허브는 살아 있기때문에 백업을 위해 사용되는 사이트이다.

몇년 전만해도 깃허브 말고도 다른 원격 저장소도 많았지만

현재 깃허브가 95프로이상 점유율을 가지고 있다.

  1. git repo란?


여러분들은 git init를 사용하면 초기화 되었다는 메시지를

본적이 있을것이다. git init은 현재 저장소에 .git 이라는 폴더를

생성하게 된다 .git 폴더는 숨겨진 파일이 므로 ls 명령어를 쳐도 나오지 않는다.

대신 ls -a 을 사용하면 모든 파일과 폴더가 나타나니 쳐보자

깃폴더에는 각각 브랜치, 로그 정보들을 가지고 있다.

  1. git의 3가지 구역


깃은 총 3가지의 구역을 가지고 있다.

  1. working directory

  2. staging area

  3. repository

이름을 봐도 전혀 감이 오질 않지 않는가 나도 처음에 그랬다.

여러분들은 커밋을 작성하기 전에 git add . 라는 명령어를 쳤을 것이다.

git add . 은 현재 working directory에 있는 모든 파일을 staging area

올리는 역할을 한다 그러면 사람들은 왜 올려야 하는지 의문점이 가질수가 있다.

그 이유는 git commit 명령어를 치게 된다면 현재 staging area에 있는 모든 파일을

local repo에 저장을 하게된다. 즉 그룹 단위로 커밋 할수가 있는 것이다.

예를 들어서 나는 a라는 기능을 구현했는데 a라는 기능을 구현하는데 필요한

파일들만을 그룹을 지어서 commit을 할수가 있다.

git add a1.py a2.py 이런식으로 staging area에 올릴 파일을 추릴수가 있다.

커밋을 할때는 기능별로 구분을 지어서 커밋을 하는 것이 좋다 그 이유는 나중에

특정 커밋으로 되돌리거나 삭제하거나 하기가 유리하기 때문이다.

git status를 사용하면 현재 git의 구역을 보여준다.

밑의 사진들을 보면서 실제 구동하는 장면을 보도록하자

  1. git의 구역을 살펴보자!

이 사진을 보면 test.txt라는 파일을 수정했을시 나오는 사진이다.

현재 working directory에 존재하는데 빨간 글씨 2줄위를 살펴보면

git add 라는 명령어를 사용해서 staging area에 올리라고 나와있다.

그 밑에 줄을 보면 git restore를 사용하면 수정된 파일을 취소 할수가있다.

  1. staging area에 파일을 올리자!

위 사진을 보면 git add . 명령어로 working directory에 존재하는 모든

파일을 staging area을 올렸다. 그결과 초록글씨로 올라가있는 파일을 볼수 있다.

git restore --staged을 사용하면 working directory로 끌어 내릴수가 있다.

  1. 커밋하기

커밋 메시지를 작성했고 1개의 파일을 성공적으로 올렸다는 메시지를 받게 된다.

그결과 현재 git구역을 살펴보면 구역이 깔끔하게 변했다는것을 알수가 있다.

  1. master? main? 둘의 차이점은 뭘까?


master는 git을 처음 만들때부터 사용되던 프로젝트의 중심이 되는 브랜치이다.

현재까지도 git에서는 master라는 브랜치를 메인으로 사용하고 있다.

그렇다면 main은 뭘까? 메인은 github에서 2020년부터 독자적으로

main이라는 브랜치이름을 master 대신에 사용하게 하고있다.

그 이유는 master라는 이름이 매우 애매모호 하다는 것이다.

main이라는 이름이 프로젝트의 중심이라는 것을 더 명확히 하는듯!

  1. 글을 마치며


git과 github는 같은 곳에서 만들어진 것이 아니라는 사실을 알아야한다.

그리고 사람들이 git의 repo를 착각 할수가 있는데 repo는 현재 로컬에서만 저장이된

상태로 github에는 저장되어 있지 않다 저장하기 위해서는 git psuh를 해줘야한다.

git clone 이라는 명령어는 git 문서에도 나와있는 명령어로 github하고만

사용되는 명령어가 아니다 gitlab같은 다른 원격 저장소에서도 사용될수 있다.

top버튼