티스토리 뷰
Git 이란?
Git(깃)이란 '소스코드를 저장'하는 저장소에요.
Git에 저장하는 소스코드는 수정도 빈번하고 고칠게 많고 여러사람이 작업하는 등 하드디스크에 사진을 저장하는 것 처럼 간단하지가 않아요.
누가 언제 어떤 파일에서 어떤 부분을 왜 바꾸었는지를 변경이 생길 때 마다 추적할 수 있도록 체계적으로 관리해 주는 기능을 하는게 '소스코드 저장소'이고 보통 이걸 'Repository'(리포지토리, 리파지토리)라고 부릅니다.
OS에도 윈도, 리눅스, 앤드뤄이드, IOS 등 여러가지가 있듯이 '소스코드 저장소'에도 'SVN', 'Git', 'CVS' 등 여러가지 프로그램이 있는데 그중에 요즘 관심을 끌고 있는게 'Git'이에요.
Git을 어려워 하는 분들이 많아요. 이유는 '소스코드 저장소'(repository)의 기능을 모른채 git을 접하기 때문이에요.
리파지토리의 기능은
1.소스를 저장한다
2.소스가 올라올 때 어디서 변경되었는지 체크한다.
3.소스 변경 사항에 대한 기록을 남긴다.
이렇게 3가지 기능이에요.
예를 들어 설명을 해볼게요.
'Hello World'를 출력하는 프로그램이 리포지토리에 있어요.
a라는 사람과 b라는 사람이 같이 작업을 하는데
a도 리포지토리에서 'Hello World'를 받고 b도 리포지토리에서 'Hello World'를 받아옵니다.
a는 'Hello World'를 'Bye World'로 고치고 리포지토리에 업로드를 했어요.
b는 'Hello World'를 'Hello World Cup'으 고치고 리포지토리에 업로드 하려고 해요.
이 경우 리포지토리가 없이 사진을 저장하듯이 소스코드를 저장하면 a가 고친 부분을 b가 덮어쓰게 되므로 a가 작업한건 없어져버립니다.
리포지토리가 하는 일은 이런일을 방지하는것이에요.
a는 'Hello World'를 'Bye World'로 고치고 리포지토리에 업로드를 하고
b가 'Hello World'를 'Hello World Cup'으 고치고 리포지토리에 업로드 하려고 할 때
리포지토리는 b에게 'a가 수정한 부분이 있기 때문에 업로드를 할 수 없다'라고 알려줍니다.
여기에서 b가 본인이 수정한 것을 올리려면 a가 수정한 부분을 b자신이 수정한 소스코드에 반영한 다음에 업로드를 해야 해요.
b는 a가 수정해서 올린 'Bye World'를 받아서 자신이 추가한 'Cup'을 붙여서 업로드 할 수 있어요.
두 명이 수정한 결과는'Bye World Cup'이렇게 되는 거죠.
왜 git을 쓰는가?
Git은 '저장소'라고 할 수 있어. 저장소긴 저장소인데 뭐하는 저장소인가 하면 '팀플레이'할 때 필요한 저장소야.
app 하나를 만드는걸 우리는 보통 Project라고 부르지. 프로젝트는 혼자 진행 하는 경우도 있지만 대부분 같이 진행을 해. 최소한 개발자 한명에 디자이너 한명은 있어야 그래도 '팔 수 있는 제품'을 만들 수 있거든. 이 git이라는 저장소는 팀프로젝트를 할 때 필요한 도구야.
한 팀은 같은 저장소에 소스코드도 올리고 디자인도 올리고 하겠지.
내가 하고 싶은건 얘네 둘을 연동하는거야. 왜냐하면 Team work을 하려면 git이 필요하기 때문이지.
Team work를 하는데 git이 왜 필요하냐구?
개발자랑 퍼블리셔랑 특정 App이던 Web App이던 만들거 아냐? 근데 개발자는 디자인을 잘 못하고 디자이너는 개발을 잘 못해.
그리고 한 팀에 다 5년차 이상 잘하는 분만 있는 것도 아니고 나 처럼 갓 들어온 신입 막내도 있고 그렇단 말이지. 막내는 쉬운 일을 하거나 메뉴얼 보면서 천천히 개발을 진행하고 테스트를 많이 하겠지.
어쨌든 핸드폰이나 서버에 깔리는 App은 최종적으로는 하나의 파일을 완성하는걸 목표로 해. 안드로이드 앱은 .apk파일을 만드는거고 web app은 .war을 만드는 거고.
하나의 파일을 만들려면 각자 개발한걸 한데 모아놓아야 하지. 개발자랑 디자이너랑 그리고 pm(프로젝트 매니저, 지휘자ㅋ)가 같이 앉아있고 각각의 노트북으로 작업을 하고 있어. 개발자가 버튼을 만들면 디자이너가 버튼에 디자인을 입히고 pm(프로젝트 매니저)께서 잘 만들었나 안만들었나 확인을 하시겠지.
그런데 노트북을 각각 쓰고 있는데 각자 결과물은 각각 SSD에 저장 되어 있기 때문에 PM님은 결과를 확인 하려면 개발자한테 가서 개발자 화면보고 버튼이 만들어졌나 안만들어졌나 봐야되고, 디자이너한테 가서 포토샵으로 잘 만들었나 안만들었나를 봐야되겠지?
그런데 문제는 버튼에 디자인이 올라가서 제대로 작동 하는지를 확인 하려면 두 파일을 한곳에 놓고 두개를 합쳐야 된단말이지. 그 저장소 역할을 하는게 Git이야.
이건 깃을 쓰는 이유고 깃에 어떤 기능이 있는지는 다음에 알아보자. 그럼 안녕~~
Git 사용법 익히기
Git를 사용해야 할 필요성을 느낀다.
왜냐하면 일단 저장소를 웹에 쓰고 싶기 때문이고 두번째는 나름 버전관리를 해보고 싶기 때문이다. 마지막으로 내가 작업한 내용을 넘겨줄 때 git으로 넘겨줘야 넘길 때 에러가 덜 날 것 같기 때문이다.
전에 이메일로 소스코드만 넘겨줬다가 잘 안돌아가서 애먹은 적이 있기 때문이다.
그리고 한번 짜놓은 소스코드를 재 사용하고 자꾸 쌓아가려면 웹에 올려 놓고 관리를 하는게 관리하기도 편하고 내 노하우도 쌓인다는 생각이 들었기 때문이다.
순서는
git hub에서 local로 받아오는건
Folk -> Clone
local에서 git hub로 올리는건
add - commit 순이다.
'개발 > Infra' 카테고리의 다른 글
로컬에 생성한 프로젝트 Bitbucket에 Repository 만들어서 올리기 (4) | 2015.02.09 |
---|---|
Git repository Clone 하기 - ssh 에러 (0) | 2014.11.16 |
bitbucket에 git repository생성하고 local repository 생성하기 (2) | 2014.10.08 |
RESTful 이란? (2) | 2014.09.30 |
Git 사용 방법 - 제1편 로컬 저장소 만들기 (0) | 2014.02.13 |
- Total
- Today
- Yesterday
- 개발자
- 도커티슈케이스
- 도커컨테이너
- docker container
- docker container case
- 2017 티스토리 결산
- 도커티슈박스
- docker container whale
- docker container tissue
- vim
- Sh
- 이직
- shellscript
- 싱가폴
- 도커각티슈박스
- Linux
- 도커각티슈케이스
- docker container tissue box
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |