IT 지식

Git 이란?

yangjoy 2021. 8. 16. 16:27

1 Git 이란?

1.1 형상 관리 도구(Configuration Management Tool) 중 하나.

- 형상 관리 도구는 버전 관리 시스템이라고도 한다.

- Git은 소프트웨어를 개발하는 기업의 핵심 자산인 소스코드를 효과적으로 관리할 수 있게 해주는 무료, 공개소프트웨어.

- 하나의 중앙 서버가 존재하지만, 각자의 컴퓨터 저장소에 중앙 서버의 전체 사본을 가지고 작업을 할 수 있다.

 

2 Git의 장점

- 소스코드를 주고 받을 필요 없이, 같은 파일을 여러 명이 동시에 작업하는 병렬 개발이 가능하다.

- 즉 브랜치를 통해 개발한 뒤, 본 프로그램에 합치는 방식(Merge)으로 개발을 진행할 수 있다.

- 분산 버전관리이기 때문에 인터넷이 연결되지 않은 곳에서도 개발을 진행할 수 있으며, 중앙 저장소가 날라가버려도 다시 원상복구할 수 있다.

- 팀 프로젝트가 아닌, 개인 프로젝트일지라도 GIT을 통해 버전 관리를 하면 체계적인 개발이 가능해지고, 프로그램이나 패치를 배포하는 과정도 간단해진다. 

 

3. Git/Github

Git : 형상 관리 도구(버전 관리 시스템)

Github : 형상 관리 도구(버전 관리) 웹호스팅 서비스

 

3.1Git(형상 관리 도구)

- 프로젝트를 진행하면서 소스 코드를 usb나 메일로 주고받는 건 엄청난 낭비, 보안성 위험이 있다.

그래서 프로젝트를 진행함에 있어 형상 관리 도구를 사용한다.

- 형상 관리 도구를 사용하면 변경을 쉽게 되돌릴 수 있다. 소스코드를 과거의 특정 시점으로 되돌리거나, 특정 시점의 변경 사항을 취소하거나, 두 버전의 소스 코드를 비교하는 등의 일이 가능하다.

 

3.2 Git 웹 호스팅 시스템

 - 협업하고 있는 코드를 저장할 서버가 필요하다.

- 버전 관리 시스템을 지원하는 웹호스팅 서비스의 기능을 통해, push, pull request 같은 이벤트에 반응하여 자동으로 작업(배포 등)을 실행하게 할 수 있다.

 

3.3 Git GUI

- 많은 Git 명령어가 어려울 때는 GUI를 사용할 수 있다. Github desktop

 

4 관련 용어

- Repository : 저장소, 히스토리, 태그, 소스의 가지치기, branch에 따라 버전을 저장한다. 저장소를 통해 작업자가 변경한 모든 히스토리를 확인할 수 있다.

- Working Tree : 저장소를 어느 한 시점을 바라보는 작업자의 현재 시점.

- Staging Area : 저장소에 커밋하기 전에 커밋을 준비하는 위치

- Commit : 현재 변경된 작업 상태를 점검을 마치면 확정하고 저장소에 저장하는 작업.

- Head : 현재 작업중인 Branch를 가리킨다.

- Branch : 가지 또는 분기점을 의미하며, 작업을 할때 현재 상태를 복사하여 Branch에서 작업을 한 후에 완전하다 싶을 때 Merge를 하여 작업을 한다.

- Merge : 다른 Branch의 내용을 현재 Branch로 가져와 합치는 작업을 의미한다.

 

5 명령어

git init : 깃 저장소를 초기화한다. 저장소나 디렉토리 안에서 이 명령을 실행하기 전까지는 그냥 일반 폴더이다. 이것을 입력한 후에야 추가적인 깃 명령어들을 줄 수 있다.

git help : 명령어를 잊어버렸다면 커맨드 라인에 "git help"를 쳐보자. 그럼 21개의 가장 많이 사용하는 깃 명령어들이 나타난다. 좀 더 자세하게 “git help init”이나 다른 용어를 타이핑하여 특정 깃 명령어를 사용하고 설정하는 법을 이해할 수도 있다.

git status : 저장소 상태를 체크한다. 어떤 파일이 저장소 안에 있는지, 커밋이 필요한 변경사항이 있는지, 현재 저장소의 어떤 브랜치에서 작업하고 있는지 등을 볼 수 있다.

git clone : 원격 저장소의 저장소를 내 local에서 이용할 수 있게 그대로 복사해 가져온다.

git add : 이 명령이 저장소에 새 파일들을 추가하진 않는다. 대신, 깃이 파일들을 지켜보게 한다. 파일을 추가하면, 깃의 저장소 “스냅샷”에 포함된다.

git commit : 깃의 의미있는 수정 작업이 끝났을 때 마침을 알리는 작업이다. 보통 “git commit -m “Message hear.” 형식으로 사용한다. -m은 명령어의 다음 부분을 메세지로 남긴다는 뜻이다.

git push : 로컬 컴퓨터에서 작업하고 커밋을 깃허브에서 온라인으로도 볼 수 있기를 원한다면, 이 명령어로 깃허브에 변경사항을 "push"한다.

git pull : 로컬 컴퓨터에서 작업할 때, 저장소의 변경된 내용을 로컬(내 컴퓨터) 저장소에 적용하는 작업이다.

git log : 커밋 내역을 확인해보고 싶을 때 사용하는 명령어이다.

git branch :여러 협업자와 작업하고 자신만의 변경을 원한다면 이 명령어로 새로운 브랜치를 만들고, 독립적인 공간을 만든다. 새 브랜치를 “hello”로 지정하고 싶다면 "git branch hello"라고 쓸 수 있다.

git checkout : 독립된 작업 공간인 브랜치를 자유롭게 이동할 수 있다. 만약 master 브랜치를 들여다 보고 싶으면, git checkout master를 사용할 수 있다.

git merge : 브랜치에서 작업을 끝내고, 모든 협업자가 볼 수 있는 master 브랜치로 병합할 수 있다. "git merge hello"라고 입력한다면 hello브랜치에서 만든 모든 변경사항을 master로 추가한다.