반응형

1. 왜 GIT을 써야하는가

2. GIT의 구조 및 명령어

3. GIT 사용의 예시

4. GIT 실습

 

1. 왜 GIT을 써야하는가

세상에 거의 모든 현업 개발자들은 혼자 개발하지 않으며, 소스들은 개발자들의 손을 통해 지속적으로 바뀐다.

이러한 특성으로 인해 소스코드들을 체계적으로 관리해주는 것 필요했고 이러한 일을 형상관리라고 한다.

우리도 일상적으로 형상관리를 해본일이 있다.

 

발표자료를 팀원들에게 공유 하는 상황을 그려본다.

 

최종.pptx

진짜 최종.pptx (아이콘 수정)

진짜 진짜 최종.pptx (진짜 최종.pptx + 피드백 자료 합치기)

진짜 이게 찐 최종.pptx (오타 발견)

 

이런 파일 공유 많이 해봤을 거라 생각한다. 상황은 다음과 같다.

최종.pptx를 받은 팀원이 최종_피드백.pptx로 피드백을 했다.

아이콘 이미지를 바꾸기 위해 난 이미 진짜 최종.pptx를 저장해서 공유하려고 했다.

피드백을 받았으니 둘을 합쳐 진짜 이게 최종.pptx가 만들어진다.

근데 또 오타를 찾았다......

진짜 이게 찐 최종.pptx가 만들어진다.

 

위와 같은 상황을 잘 관리할 수 있게 도와주는 툴(프로그램)을 우린 형상관리 툴(프로그램)이라고 한다.

 

형상관리 툴은 다른 개발자와 같은 파일을 수정하거나 개발했던 것을 원복해야할 때 등 좋지 못한 상황이 발생했을 때도 큰 힘을 발휘한다.

 

이 형상관리 툴은 SVN과 GIT이 대표적이다. 다만, GIT은 혁신이라고 불리우는 대신 지옥에서 왔다는 별명을 가지고 있다.

 

둘의 특징은 다음과 같다.

SVN은 직관적이기 때문에 사용하기가 편하다.

SVN서버에 저장소를 만들고 거기에 모든 개발자들이 연결하여

중앙 집권식으로 소스를 업로드(commit), 다운로드(update)하게 된다.

이 말은 SVN서버와의 연결이 끊어지면, 업로드 다운로드가 안 될뿐아니라

소스를 수정했던 이력들을 볼수 없고, 서버가 수명을 다 한다면 수정 이력들을 날려버리게 된다.

내 로컬 PC에 소스는 남아있으니 SVN서버를 다시 파서 개발자들에게 이쪽으로 붙으라고 하면 되지만,

여기서 GIT이 좋은 이유를 찾을 수 있다.

 

GIT은 여러 단계를 거쳐 다른 개발자들과 소스를 공유하게 되는데,

단계가 많다보니 단계별로 발생 할 수 있는 경우의 수가 많다.

그럼에도 불구하고 GIT이 가진 장점으로 위와 같은 상황에서 힘을 발휘한다. 

 

GIT은 개발자들마다 독립적으로 저장소를 가지고 있고 관리가 가능하기 때문에

GIT 서버가 어떻게 되든 히스토리를 똑같이 복구 할수 있다.

심지어 GIT의 서버는 github.com 사이트에서 서버로 활용할 수 있어, 서버 구매 비용도 없고 서버가 잘못될 가능성도 현저히 적다.

 

히스토리가 왜 중요할까?

더보기

소스를 복원해야하는 경우가 생길 수 있다.

결정권자의 횡포로 아 이거 전에거가 더 나은대? 원래대로 돌리자 라거나,

심각하고 치명적인 오류를 뒤늦게 발견했지만, 고치려면 시간이 오래 걸린다면 이전 상태로 돌려야한다.

 

말그대로 소스의 역사를 통한 정보 습득이다.

누가 언제 어디서 무엇을 어떻게 소스를 작성했는지 알고 여러가지 일을 할 수 있게 된다.


 

다음으로 GIT은 개발자 자신만의 버전관리를 할 수 있다.

버전 관리라고 함은 어떠한 기능을 만들때 썼던 여러가지 소스들을 유의미한 단위로

묶어서 관리한다는 이야기이다.

만약, 로그인 기능을 만든다고 하면 로그인 기능을 업데이트한 버전을 묶어서 저장소에 저장을 한다.

이렇게 관리된 버전들은 명령어 하나로 아주 쉽게 이전 상태의 버전들로 돌아갈 수 있다.

 

세번째 GIT은 Branch와 merge 기능을 사용하기에 좋다.

갑자기 처음 보는 용어가 나와서 당황 했을 것이다. 한국말로 브랜치와 머지라고 하는데

위의 최종.pptx사태로 돌아가 보자. 

(개념적으로만 이해하고 넘어가자. 실습으로 이해하는게 더 빠르다.)

 

상황

최종.pptx를 팀원에게 공유하고 혹시 피드백이 올지 몰라

최종.pptx를 기반으로 따로 진짜 최종.pptx 파일로 작업한다.

아니나 다를까 최종_피드백.pptx가 피드백이 왔고

진짜 최종.pptx최종_피드백.pptx를 합쳐 진짜 진짜 최종.pptx를 만들었다.

 

해석

2번째 줄인 최종.pptx를 기반으로 따로 진짜 최종.pptx 파일로 작업한다.

는 말을 최종.pptx에 브랜치따서 작업 한다고 얘기한다.

 

4번째 줄에 최종_피드백.pptx진짜 최종.pptx를  합쳐 진짜 진짜 최종.pptx를 만들었다.는 얘기는

브랜치로 딴 진짜 최종.pptx와 원본 파일의 수정본인 최종_피드백.pptx를 머지 한다고 한다.

 

 

최종 정리

SVN

- 직관적이고 사용하기 편하다.

- 중앙 집권식으로 소스들을 다운로드 업로드 한다.

- 서버가 죽으면 히스토리를 살릴 수 없다.

 

 

GIT

- 독립적인 저장소를 관리한다.

- 버전 관리를 개발자가 직접 할 수 있으며, 버전별 소스 상태 변경이 용이하다 

- branch와 merge 기능을 사용하기 좋다.

반응형

+ Recent posts