Git Git 의 개념과 기초 사용법

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

 

스크린샷_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/

 
번호 제목 글쓴이 날짜 조회 수
79 [Gemini] branch 와 worktree 의 차이점 황제낙엽 2026.09.27 15
78 버전 관리 이슈 케이스 (1) : 장기적으로 pull 하지 않은 개발자의 대량의 merge 이슈 발생 file 황제낙엽 2026.05.13 480
77 sourcetree - 특정 커밋으로 프로젝트 변경 황제낙엽 2025.08.26 675
76 git clone시 보안에 취약하지만 사용자 아이디와 비번 저장해놓고 사용하기 황제낙엽 2025.08.05 683
75 cherry pick 내가 원하는 커밋만 가져오기 file 황제낙엽 2022.02.17 1051
74 Git Extensions Online Manual 황제낙엽 2022.02.17 5441
73 TortoiseSVN 초보자 가이드 file 황제낙엽 2022.02.09 973
72 [TortoiseSVN] SVN Revision 되돌리는 법 file 황제낙엽 2022.02.09 2608
71 심플한 커밋 이력 조회 (git log --pretty=format) [2] 황제낙엽 2022.01.12 1078
70 Git 특정 폴더 및 파일만 clone 하기 (작성중) 황제낙엽 2021.10.08 1018
69 git remote set-url file 황제낙엽 2021.09.03 909
68 git clone [bare/mirror] 정리 file 황제낙엽 2021.09.03 1493
67 Git Repository 이동하기 황제낙엽 2021.09.02 912
66 유용한 Git 명령어 몇가지 황제낙엽 2021.09.02 924
65 Git의 4가지 영역 황제낙엽 2021.09.02 907
64 Git bare repository 황제낙엽 2021.09.02 834
63 git reset의 3가지 옵션 제대로 이해하기 file 황제낙엽 2021.07.31 916
62 이전 커밋으로 되돌리기 (revert, reset) file 황제낙엽 2021.07.31 1075
61 TortoiseSVN - add to ignore list file 황제낙엽 2021.06.04 1176
60 Ubuntu 에 Git 설치 황제낙엽 2020.09.13 937