Git Git 의 개념과 기초 사용법

황제낙엽 2016.05.12 16:57 조회 수 : 72

sitelink1 http://maskkwon.tistory.com/129 
sitelink2  
sitelink3  

 

스크린샷_2013-06-01_1.55.48_PM.png

 

 

 

 위의 자료를 이용하여 Git에 관하여 공부하자!! SVN은 보통 저장소가 서버에 존재하게 된다. Git은 저장소가 내 컴퓨터에 존재한다. 그렇기 때문에 속도가 빠르다. 그리고 다른 사람과의 작업을 원한다면 내 컴퓨터의 저장소를 원격 저장소에 연결하면 된다. Commit은 내 컴퓨터의 저장소에 작업 내용을 올리는 것이고 원격 저장소에 작업 내용을 올리는 것은 Push라고 한다. 결과적으로 Git은 밑의 그림처럼 보여진다.

 

 

스크린샷_2013-06-01_1.58.47_PM.png

 

 

 

 위와 같은 구조로 인하여 Git이 갖는 장점은 무엇보다 빠르다는 것이다. Commit을 로컬 저장소에 하기 때문에 네트워크를 거치지 않고 당연히 빠를 수 밖에 없다. 네트워크가 불가한 상황에서도 작업을 계속할 수 있다. 로컬 저장소를 이용하기 때문이다.

 

 

스크린샷_2013-06-01_2.02.04_PM.png

 

 

 

 

 또 하나 알아두어야 할 것은 Stage(index라고도 부름)라고 부르는 영역이다. 이는 로컬 저장소에 Commit하기 전에 거치는 또 하나의 영역이다. Commit할 파일들은 먼저 Stage에 추가된다. Stage를 이용함으로써 SVN과 다르게 수정된 파일을 모두 Commit해야하는 상황을 피할 수 있다. Stage에 추가한 다음에 Commit하는 방식이 번거롭다면 

 

git commit -a

 

 위의 명령어를 이용해서 한번에 처리할 수 있다. Commit한 파일을 원격저장소에 Push하기 위해서 아래의 명령어를 사용한다.

 

git push

 

 지금까지 알아본 내용을 모두 정리하면 밑에와 같은 그림이 그려지게 된다.

 

 

스크린샷_2013-06-01_2.05.56_PM.png

 

 

 

 내 작업들이 오류가 발생 했을 때는 Pull을 이용하여 다른 사람들이 한 작업을 내려 받으면 된다. 원격 저장소에서 로컬 저장소로 내려받는 것은 Fetch라고 하고 내려받은 데이터를 병합하는 것은 Merge라고 한다. 그리고 위의 둘을 모두 하는 것은 Pull이다. 

 

 

스크린샷_2013-06-01_2.09.12_PM.png

 

 

 

 위에 설명한 Git의 기능 외에 특별한 기능들에 대해서도 알아보도록 하자. 먼저 Snapshot이다. Snapshot는 git에서 각 버전을 저장하는 기능이다. SVN은 각 버전의 차이점을 기록하지만 Git은 각 버전 자체를 저장한다. SVN은 새로운 버전을 받을 때, 파일과 각 버전의 변경내역을 다운로드 받게 된다. 하지만 Git은 해당 버전 자체만을 다운로드 하기 때문에 느리지 않다. 또한 로컬 저장소에서 받기 때문에 네트워크가 불가한 상황에서도 받을 수 있다.

 

 다음으로 알아볼 기능은 Branch이다. SVN에서 제공하는 Branch는 아래와 같은 디렉토리 구조이다. 파일 전체의 변경 내역만을 다른 디렉토리에 복사해 놓는다. 이는 Branch를 내려 받을 때, 변경내역을 순차적으로 적용하여 실제 파일을 만든 후에 네트워크를 통해 다운로드함으로써 느리고 부담스럽다.

 

 

스크린샷_2013-06-01_2.32.36_PM.png

 

 

 

 하지만 Git은 연속적으로 Snapshot이 순차적으로 이어지다가 Branch를 만들어서 관리한다. 참고로 Checkout은 SVN에서 작업 내용을 다운로드하는 기능이지만 Git에서는 Branch를 선택하는 기능입니다.

 

 

스크린샷_2013-06-01_2.38.14_PM.png

 

 

 

 다음 설명할 기능은 Rebase이다. Rebase는 Merge와 비슷한 기능이다. Master와 Branch를 통합하는 기능이다. 차이점은  Merge는 2개의 Branch와 2개의 Branch의 조상을 병합하는 3-Way-Merge를 실행한다. Rebase는 Master와 하나의 Branch를 병합하고 순차적으로 다른 Branch를 병합하여  히스토리를 상대적으로 깔끔하게 유지해준다. 밑의 그림으로 비교를 해보자.

 

 

스크린샷_2013-06-01_2.50.11_PM.png

 

 

 

 마지막으로 설명할 기능은 Tag이다. Tag는 SVN과 마찬가지로 각기 다른 Revision을 하나의 통합된 Version으로 저장하는 것으로 명령어를 통하여 지원하고 있다.

 

 

 이로서 Git의 기본적인 기능과 개념들을 익혔다. 이제 Git을 직접 설치하고 사용해보자. Git은 공개소프트웨어 개발에서 무지무지무지무지하게 널~~~~~~리 사용되고 있다. 그래서 사용법을 익혀둔다면 유익한 도구이다. 밑에 Git의 명령어들과 참고 사이트들을 기록한다. 

 

 

Git 공식 사이트 : http://git-scm.com/

 

Git 간편안내 : http://rogerdudler.github.com/git-guide/index.ko.html

 

Git Hub : https://github.com/

 
번호 제목 글쓴이 날짜 조회 수
35 [Review] gitflow, 쉬운 git branch 관리 By 개발왕 김코딩 on 2월 11, 2014 in 개발 이야기 file 황제낙엽 2016.05.18 57
34 [TortoiseGit] 윈도우에서 깃(Git)을 좀더 편리하게 사용하기 file 황제낙엽 2016.05.17 103
33 윈도우에서 깃(git) 서버 설치하기 file 황제낙엽 2016.05.17 404
32 [TortoiseGit] 깃(Git) 브랜치 머지(Merge)하기 file 황제낙엽 2016.05.17 157
31 [TortoiseGit] 깃(Git)으로 브랜치/태그 만들기 file 황제낙엽 2016.05.17 142
30 Pro Git Book 다운로드 file 황제낙엽 2016.05.17 123
29 Git, 정말 필요한가 file 황제낙엽 2016.05.12 68
28 GIT/ 프로젝트, 폴더, 파일 관리 프로그램 장점 및 추천 (TortoiseGit) file 황제낙엽 2016.05.12 131
27 Git 의 기능 및 장점 황제낙엽 2016.05.12 56
» Git 의 개념과 기초 사용법 file 황제낙엽 2016.05.12 72
25 Git 과 svn 비교 - svn 대비 git의 차별점 file 황제낙엽 2016.05.12 107
24 Git에 대한 단상 황제낙엽 2016.05.12 24
23 Git 의 장점과 단점 황제낙엽 2016.05.12 191
22 Git 의 기능 및 장점 황제낙엽 2016.05.12 23
21 TortoiseSVN 잠그기 (Get lock) file 황제낙엽 2016.02.04 65
20 VisualSVN Server 와 TortoiseSVN 관련 링크 모음 file 황제낙엽 2016.02.03 115
19 Win7 64bit에서 subclipse 1.6.x 사용 시 javahl 버전 에러 황제낙엽 2013.03.02 44
18 Versioning 에 대한 참고 사항 황제낙엽 2012.08.28 62
17 SVN 사용시 revision 번호로 버전관리하는 방법 황제낙엽 2012.08.28 586
16 How do I get JavaHL? 황제낙엽 2010.09.28 51