Skip to main content
GIT

From Basic to Chaos

    Yunkyu Choi
   2013/Mar/05
Contents
Basic      &       Chaos
BASIC
GIT Overview
• Distributed (각자가 자신의 로컬 저장소를
  갖음)
  – SCM (Software Configuration Management)
  – or Source Code Management System
  – or Revision(Version) Control System
• Started from 2005
• Strong safeguards against corruption
• Developed by Linus Torvalds
  – 리눅스를 개발하며 생긴 공동 개발 문제 해결
    노력
장점
• 모든 저장소 정보가 최상위 디렉토리에
  폴더 형태로 저장됨.
 – 저장소의 복사/이동이 자유로움
 – 기타 많은 장점 ㅡㅡ
분산(Distributed) 저장소
Centralized                Distributed
                  Remote




              Local                      Local
Git Snapshot

Others


             다른 시스템들은 차이점만 저장
         Git 은 각 버전의 모든 정보를 저장함


 GIT
First Step

WORKING WITH GIT
Install and Setting
• Install
   – http://git-scm.com/book/en/Getting-Started-
     Installing-Git
• Setting
   – http://git-scm.com/book/en/Getting-Started-First-
     Time-Git-Setup
GIT Concept
Remote                     Object Database
(원격지의 저장소)                 Blob: 파일 내용
                           Tree: 디렉토리
                           Commit: 커밋 정보
                           Tag: 추가 정보


                           Staging Area
                           다음에 커밋 될
 Local                     파일들을 추가, 캐쉬
 (자신의 PC)                  해놓음
로컬 저장소
• 로컬 저장소가 존재
  – 네트워크가 연결되지
    않아도 버전관리 가능

• 로컬에서의 상태
  1. 수정됨 : Modified 상태
  (working directory)

  2. 수정되고 추가됨 : Staged
  상태 (staging area)

  3. Commit 됨 : Commited 상태
  (git directory)
git 따라해 보기 (로컬)
• Try GIT
  – http://www.codeschool.com/courses/try-git
• git init : git 저장소(.git 디렉토리)생성
• git status : 현재 상태 보기
• git add [파일이름] : 해당 파일을 stage
  area에 추가
• git commit –m “커밋 코멘트” : stage area 의
  내용을 로컬 저장소에 커밋
GIT Concept (Detailed, Remote포함)
git 따라해 보기(원격지 포함)
•   git remote add origin [원격지주소] : 원격지에 있는 저장소를 추가 (여기서는
    origin이라는 이름으로 원격지 주소를 설정)
•   git push –u origin master : 현재 로컬저장소 브랜치(master)를 위에서 설정한
    origin 의 주소에 밀어 넣음(저장)
    – u 옵션은 설정을 저장하여 다음에는 git push로 같은 동작이 가능
•   git pull origin master: 원격지인 origin 으로 부터 변경된 내용을 로컬의 master
    브랜치로 가저옴
•   git diff HEAD : working 디렉토리와 로컬 저장소의 HEAD 위치 (가장 최근
    커밋)에서의 차이점 보여줌
•   git diff --staged : staged 영역과 저장소의 HEAD 위치와의 차이점을 보여줌
•   git reset [파일이름] : 스테이지 영역에 추가된 사항을 되돌림. 워킹
    디렉토리에는 변경이 없음.
•   git branch [브랜치 이름] : 새로운 로컬 브랜치를 만듬
•   git checkout [브랜치 이름] : 해당 브랜치로 작업 대상을 변경함
•   git rm [파일이름] : 해당 파일들을 제거 (워킹디렉토리와 스테이지 영역에서
    모두 제거)
•   git fetch origin : 원격 저장소에서 패치를 가져옴
•   git merge [ 브랜치 이름] : 현재 브랜치와 명시한 브랜치와 합침
•   git branch –d [ 브랜치 이름] : 명시한 브랜치를 제거함
Step into Chaos

ADVANCED
GIT Branching
• 인터렉티브 학습툴
 – http://pcottle.github.com/learnGitBranching/?de
   mo
• Git 사용 가이드
 – http://www.slideshare.net/dhrim/git-12030742


• 헷갈리지만 하다보면 뭔가 감이 잡힘
기타
• Git Ref
   – http://rogerdudler.github.com/git-guide/index.ko.html
   – http://www.hanb.co.kr/network/view.html?bi_id=1664
   – http://devcheatsheet.com/tag/git/?page=1

• Git hosting
   – mac
      • http://www.makebetterthings.com/git/install-gitlabhq-with-
        gitolite-on-mac-os-x-server-mountain-lion/

   – Window
      • http://whatwant.tistory.com/411
• Basic => Chaos => Harmonious?