SlideShare a Scribd company logo
Git
                    분산 버전 관리 시스템

                         -강별-
                     bkang721@gmail.com




11년	 8월	 28일	 일요일                         1
Category
    ❖ CVS, SVN
    ❖ Git 방식이란?
    ❖ Git 설정하기
    ❖ Git 이용하여 개발하기




11년	 8월	 28일	 일요일     2
CVS, SVN


    CVS, SVN
    CVS(Concurrent Versions System) ; 동시 관리 버전 시스템
       저장소의 파일들의 이름을 바꿀 수 없다.


    SVN(Subversion) ; 자유 소프트웨어 버전 관리 시스템
       네트웍 연결이 되지 않으면 자유로운 버전관리가 불가능하다.




11년	 8월	 28일	 일요일                                           3
Git 방식이란?
    ❖ 저장소(repository)란?
    ❖ 어떻게 저장 대상을 결정하는가?
    ❖ 작업 트리(working tree)란?
    ❖ 어떻게 파일을 조작하고 동기화 하는가?
    ❖ 어떻게 프로젝트, 디렉토리 그리고 그 안에 포함된 파일을
      추적하는가?
    ❖ 어떻게 태그(tag)를 이용해 마일스톤(milestone)을 기록
      하는가?
    ❖ 어떻게 브랜치(branch)를 이용해 분기 이력을 추적하는가?
    ❖ 합치기(merge)란 무엇인가?
    ❖ 어떻게 Git이 파일 잠금을 처리하는가?


11년	 8월	 28일	 일요일                            4
Git 방식이란?


    Git 방식의 강점
    ❖ 분산 아키텍쳐
                - 항상 인터넷에 연결돼있어야 하는 고통 없이 동작한다.


    ❖ 쉬운 브랜치 만들기와 합치기
                -   브랜치를 생성하기가 쉽다.
                -   비용이 적다.
                -   속도가 빠르다.
                -   브랜치를 여러번 나눈 경우라도 간단히 합칠 수 있다.


    ❖ 서브 버전과 통신
                - 회사 내에 자신만이 Git으로 바꿀 준비가 된 유일한 사람이라
                면, 모두가 서브버전을 계속 사용하고 있어도 무방하다.

11년	 8월	 28일	 일요일                                          5
Git 방식이란?


   저장소(repository)란?
    버전 관리 시스템에서 사용자가 변경한 모든 내용을 추적하는 공간.


    ex) 은행(Bank)


        은행 계좌 ➜ 저장소(repository)
        은행 거래 내역 ➜ 저장소 이력
        돈 ➜ 소스 코드(source code)
        입금 ➜ Commit


     ⦁ Git 방식 : 현금 자동 인출기가 붙어있는 자신 만의 금고(개인은행)
     ⦁ 중앙 집중식 시스템 : 팀 구성원 모두가 사용하나는 하나의 은행



11년	 8월	 28일	 일요일                                            6
Git 방식이란?


   저장 대상을 결정
    프로젝트를 진행하는 데 필요한 전부.


    ex) Source code, Makefile, Rakefile, Ant(build.xml) 등..
        그 외 : 설정 파일 예제, 문서, 이미지 등..




     ⦁ Makefile : C/C++ / Rakefile : Ruby / Ant : Java build




11년	 8월	 28일	 일요일                                                          7
Git 방식이란?


   작업 트리(working tree)란?
    모든 변경은 작업트리에서 이루어 진다.


    작업트리 ➜ 모든 프로젝트(소스코드, 빌드 파일, 단위 테스트)
    = 작업 복사본(working copy)


    맨 처음의 작업트리는,
    ❖ 자신의 프로젝트를 저장소에 초기화 하도록 요청
    ❖ 기존 저장소의 프로젝트를 복제(clone)


    복제하기(clone)는 지역 저장소를 만든 후 기본 흐름인 마스터 브랜
    치에서 복사본을 체크아웃(check out) 한다.
    ⦁ 체크아웃(check out) : 사용자의 작업트리를 저장소의 특정 시점과 일치하도록 변경하는 것

11년	 8월	 28일	 일요일                                             8
Git 방식이란?


   파일을 조작, 동기화
   ❖ 변경 사항을 커밋(commit)하고 저장소에 새로운 리비전을 추가,
   무엇을 변경했는지 로그메시지를 저장


   ❖ 바뀐 내용을 다른 개발자가 이용하게 하기 위해서 변경 사항을 공유
           ➜ 푸싱(pushing) : 바뀐 내용을 다른 개발자와 공유


   ❖ 다른 팀 멤버의 변경 사항을 가져와 최신으로 갱신하여 동기화 완료
           ➜ 풀링(pulling) : 다른 멤버의 변경 사항을 나의 저장소와 동기화


   변경 사항 가져 오기
    ▶ 원격 저장소에 있는 변경 사항의 복사본 생성 ⇔ 푸싱
    ▶ 가져온 변경 사항을 지역 이력과 합친다 ⇒ 풀링
11년	 8월	 28일	 일요일                                          9
Git 방식이란?


   프로젝트, 디렉토리 안 파일 추적
    ❖ 저장 대상을 구조화


    ❖ 파일을 내용 단위로 추적 ; 최하위계층
    ex) models.py 내 부의 변수나 함수 등을 구성하는 각 문자와
    줄을 추적, 이름, 파일 모드(file mode), 심볼릭 파일 여부와 같은
    메타데이터(metadata)를 models.py 에 추가 한다.
        ➜ 저장소의 전체 이력을 저장하는 데 필요한 공간 줄어듬.


    ❖ 저장소의 구조는 프로젝트 마다 다르다 ; 프로젝트에 알맞게 구성 .
            ➜ 프로젝트 마다 새로운 디렉토리, or 새로운 저장소



11년	 8월	 28일	 일요일                                        10
Git 방식이란?


  태그(tag), 마일스톤(milestone) 추적
    ❖ 마일스톤(milestone) ; 일정 간격으로 세워져 있는 이정표.
            프로젝트가 잘 진행되고 나아갈 수 있도록 중간 중간의 목표지점
            및 체크포인트로서 설정을 해 놓은 것.
             ➜ 날짜와 목적하는 상태에 대한 서술, 세부 항목들의 체크 리
                스트, 중간 점검을 위함.


    ❖ 태그(tag) ; 저장소 이력의 특정 시점을 기록.
            저장소 이력의 특정 위치를 기록해두어 참조 한다.
            쉬운 이름을 특정 리비전의 태그에 부여 ➜ 저장소의 이력을 추적




11년	 8월	 28일	 일요일                                    11
Git 방식이란?


  브랜치(branch), 분기 이력 추적


                                               마스터 브랜치




      ex)                ❖ 브랜치를 생성 ➜ 파일이 분기하는 위치가
      책 = 저장소,           저장소에 기록됨.
      시리즈 = 브랜치          ❖ 다른 브랜치와 분리하여 변경 사항을 지속
                         적으로 추적, 분기 이력을 생성.

    ⦁ 마스터 브랜치(master branch) ; 트렁크(trunk) : 개발의 기본 줄기

11년	 8월	 28일	 일요일                                                    12
Git 방식이란?


  브랜치(branch), 분기 이력 추적

                                           promt > git branch [..] master
                                                  릴리즈 브랜치
             브랜치 생성
                                                  마스터 브랜치




      ex)                ❖ 브랜치를 생성 ➜ 파일이 분기하는 위치가
      책 = 저장소,           저장소에 기록됨.
      시리즈 = 브랜치          ❖ 다른 브랜치와 분리하여 변경 사항을 지속
                         적으로 추적, 분기 이력을 생성.

    ⦁ 마스터 브랜치(master branch) ; 트렁크(trunk) : 개발의 기본 줄기

11년	 8월	 28일	 일요일                                                                   12
Git 방식이란?


  브랜치(branch), 분기 이력 추적

                                           promt > git branch [..] master
                                                  릴리즈 브랜치
             브랜치 생성
                                                  마스터 브랜치
                                                   기타 브랜치
                                                  ex) milestone...




      ex)                ❖ 브랜치를 생성 ➜ 파일이 분기하는 위치가
      책 = 저장소,           저장소에 기록됨.
      시리즈 = 브랜치          ❖ 다른 브랜치와 분리하여 변경 사항을 지속
                         적으로 추적, 분기 이력을 생성.

    ⦁ 마스터 브랜치(master branch) ; 트렁크(trunk) : 개발의 기본 줄기

11년	 8월	 28일	 일요일                                                                   12
Git 방식이란?


  합치기(merge)란?
    합치기(merge) : 브랜치의 이력을 하나로 합친다.


    ❖ Git 방식 : 사용자가 직접 하는 방식과 동일.


    ❖ 파일의 서로 다른 영역이 변경 ➜ Git이 알아서 합친다.
        합칠 수 없는 상황 ➜ 오류가 있음을 기록, 사용자에게 충돌 알림.
            (서로 다른 개발자가 같은 위치를 다르게 수정)


    ❖ 합치기 추적 ; Git이 합치기 추적 제공.
        함께 합쳐진 커밋 내용을 추적, 이미 합쳐진 내용은 다시 합치지 않
        음.
         ➜ CVS 같은 버전 관리시스템에서는 제공 되지 않음.
11년	 8월	 28일	 일요일                                    13
Git 방식이란?


  Git의 파일 잠금 처리
    ex) 도서관에서 책을 빌림 = 체크아웃(check out)


    strict locking ➜ 내가 사용하는 한 다른 사람 사용 금지.
    optimistic locking ➜ 다수의 개발자 동시에 접근 가능.


    ①     A 와 B가 모두 저장소의 복사본 생성, 각자 변경.
    ②     같은 파일의 다른 부분을 편집.
    ③     A가 자신의 변경 사항을 고유 저장소에 푸싱.
    ④     B도 자신의 변경 사항을 푸싱.
    ⑤     Git은 B의 푸싱을 거절.
    ➜ Why?


11년	 8월	 28일	 일요일                                         14
Git 방식이란?


  Git의 파일 잠금 처리
    ex) 도서관에서 책을 빌림 = 체크아웃(check out)


    strict locking ➜ 내가 사용하는 한 다른 사람 사용 금지.
    optimistic locking ➜ 다수의 개발자 동시에 접근 가능.


    ①     A 와 B가 모두 저장소의 복사본 생성, 각자 변경.
    ②     같은 파일의 다른 부분을 편집.
    ③     A가 자신의 변경 사항을 고유 저장소에 푸싱.
    ④     B도 자신의 변경 사항을 푸싱.
    ⑤     Git은 B의 푸싱을 거절.
    ➜ 복사본을 만든 후 파일이 변경됐으므로, B는 저장소에서 파일의 변경사항을 풀
    링한 후, 충돌된 영역이 있다면 이를 처리 후 다시 서버로 변경사항을 푸싱 해야함.
11년	 8월	 28일	 일요일                                         14
Git 설정하기
    ❖ Git 설치하기
    ❖ Git 구성하기
    ❖ Git 도움말 이용




11년	 8월	 28일	 일요일   15
Git 설정하기


    Git 설치하기
    Linux :
         $ sudo apt-get build-dep git-core git-doc
                         ➜ git-core와 git-doc 패키지가 의존하는 모든 패키지 설치.

                $ make prefix=/usr/local all doc
                         ➜ 전체 사용자가 사용할 수 있도록 Git을 설치.

                $ sudo make install install-doc
                         ➜ 설치


    Mac OS X:
        $ sudo port install git-core +svn +doc
                         ➜ Git과 git-svn을 설치




11년	 8월	 28일	 일요일                                                              16
Git 설정하기


    Git 설치하기
    Window : Cygwin, msysGit 등..




11년	 8월	 28일	 일요일                             17
Git 설정하기


    Git 설치하기




11년	 8월	 28일	 일요일              18
Git 설정하기


    Git 설치하기


    $ git --version
    git version 1.7.4




11년	 8월	 28일	 일요일                  19
Git 설정하기


   Git 설정하기(1)

    $ git config --global user.name “홍길동”
    $ git config --global user.email “HongGD@git.com”


    $ git config --global --list




11년	 8월	 28일	 일요일                                                  20
Git 설정하기


    Git 설정하기(2)
    ❖ 출력 결과 색 설정


    $ git config --global color.ui “auto”




11년	 8월	 28일	 일요일                                      21
Git 이용하여 개발하기




11년	 8월	 28일	 일요일   22
Git 이용하여 개발하기


    새 저장소 만들기
    $ mkdir Project
    $ cd Project
    $ git init


    ❖ 초기에 사용할 어떤 내용물이 있다면,

    $   tar xzvf MyProject.tar.gz
    $   cd MyProject
    $   git init
    $   git add .
    $   git commit



11년	 8월	 28일	 일요일                                   23
Git 이용하여 개발하기


    커밋 만들기
    ① 편집기를 이용하여 작업 디렉토리 상에 변경 사항을 만든다.
    ② git에게 변경 사항을 알려준다.
    ③ 위 단계에서 git에게 알려준 내용을 이용하여 커밋을 만든다.




    $ git commit -m “message” -a      # 가장 최신 버전 커밋
    $ git commit -m “message” hello.c # 지정 파일만 커밋

11년	 8월	 28일	 일요일                                          24
Git 이용하여 개발하기


    차이점 살펴보기
    $ git diff       # 스테이징 되지않고 커밋되지도 않은 변경 사항 표시.
    $ git diff      --cached # 스테이징되지않은 변경 사항 표시 안함.
    $ git diff      HEAD # 작업트리, 스테이징된 변경 사항, 저장소의 모든
    차이점을            비교함.




11년	 8월	 28일	 일요일                                           25
Git 이용하여 개발하기


   변경 사항 추적하기(1)
    $ git status




11년	 8월	 28일	 일요일                   26
Git 이용하여 개발하기


    변경 사항 추적하기(2)
    $ git log
    $ git log -1




11년	 8월	 28일	 일요일                   27
Git 이용하여 개발하기


    브랜치 만들고 사용하기
    $ git branch                 # 이 저장소 내의 모든 로컬 브랜치
    $ git branch RB_1.0 master   # 생성하려 것, 분기해 나올 것.
    $ git checkout RB_1.0        # 브랜치를 RB_1.0으로 변경.




    ❖ 마스터 브랜치를 변경 했다면, 릴리즈 브랜치에는 없는 내용이다.




11년	 8월	 28일	 일요일                                          28
Git 이용하여 개발하기


    브랜치 합치기
    $ git merge RB_1.0    # RB_1.0 브랜치의 변경 사항이 master 브
    랜치에 합쳐진다.


    $ git merge --squash hello.c   # 모든 커밋을 하나의 커밋으로
    밀어넣는다.




11년	 8월	 28일	 일요일                                          29
Git 이용하여 개발하기


     릴리즈 다루기
    $ git tag 1.0 RB_1.0
    $ git tag
    1.0




                                                       hello.c 변수 추가


                                             릴리즈 브랜치

                hello.c 추가   hello.c 1차 수정                       hello.c 1차 수정


                                                마스터 브랜치




11년	 8월	 28일	 일요일                                                                30
Git 이용하여 개발하기


     릴리즈 다루기
    $ git checkout master
    $ git rebase RB_1.0


    $ git branch -d RB_1.0
    $ git branch RB_1.0.1 1.0                          hello.c 변수 추가
    $ git checkout RB_1.0.1
                                             릴리즈 브랜치

                hello.c 추가   hello.c 1차 수정                       hello.c 1차 수정


                                                마스터 브랜치




11년	 8월	 28일	 일요일                                                                31
Git 이용하여 개발하기


     릴리즈 다루기
    $ git checkout master
    $ git rebase RB_1.0


    $ git branch -d RB_1.0
    $ git branch RB_1.0.1 1.0
    $ git checkout RB_1.0.1

                hello.c 추가   hello.c 1차 수정   hello.c 변수 추가   hello.c 1차 수정




                                                             1.0


11년	 8월	 28일	 일요일                                                            31
Git 이용하여 개발하기


     릴리즈 다루기
    $ git archive --format=tar 
                  --prefix=Project-1.0/ 1.0 
                  | gzip > Project-1.0.tar.gz

    # --format ; Git이 생성할 출력 파일의 형식
    # --prefix ; 1.0 의 모든 내용을 Project-1.0/ 디렉토리 아래 포함.
    # | gzip > ; git archive에 의한 tar파일을 파이프라인으로 연결하여,
                 gzip으로 압축.


    $ git archive --format=zip 
                  --prefix=mysite-1.0/ 1.0 
                  | gzip > mysite-1.0.zip
11년	 8월	 28일	 일요일                                               32
Git 이용하여 개발하기


    원격 저장소 복제하기
    $ git clone git://git.kernel.org/pub/scm/git/git.git
    # git 프로그램


    ❖ 생성된 디렉토리에는,
    프로젝트 파일의 복사본들(= 작업트리)과 프로젝트의 변경 이력에
    대한 모든 정보를 포함하고있는 “.git”라는 최상위 디렉토리가 존재.




11년	 8월	 28일	 일요일                                                   33
Git 이용하여 개발하기


    변경 사항 푸싱하기
    ❖ 프로젝트 구성원과 변경사항을 공유하도록 상위 저장소에 변경 사
    항을 푸싱한다.


    $ git push
    $ git push --dry-run # 푸싱된 변경 사항 확인.


    ❖ 아무 매개변수 지정하지 않으면, origin 저장소에 동일한 이름의
    브랜치로 동기화.




11년	 8월	 28일	 일요일                                          34
Git 이용하여 개발하기


   새로운 원격 저장소 추가하기
    ❖ 쉽게 말하면 내 저장소에 다른 저장소를 동기화.


    ❖ 기본 원격 저장소는 origin 이라고 명명하며, 복제한 저장소의 전
    체 이름에 대한 별칭이다.


    $ git pull git://ourcompany.com/dev-erin.git
    $ git remote add erin git://ourcompany.com/dev-erin.git
    $ git pull erin HEAD




     ⦁ 읽기나 쓰기 권한이 있다면 어떠한 저장소에서도 푸싱하거나 풀링 할 수 있다.


11년	 8월	 28일	 일요일                                                35
로컬 컴퓨터에서 생성된                               Git 이용하여 개발하기


      프로젝트를 원격 저장소에 추가
    $ git remote add origin git@example.com:/repos/pocus.git
    $ git push origin master


    ❖ 변경 사항을 푸싱하려는 저장소가 기본 저장소라면 원격 저장소를
    origin으로 별칭을 지정한다.




     ⦁ 읽기나 쓰기 권한이 있다면 어떠한 저장소에서도 푸싱하거나 풀링 할 수 있다.


11년	 8월	 28일	 일요일                                               36
The most commonly used git commands are:
   add        Add file contents to the index
     bisect         Find by binary search the change that introduced a bug
     branch         List, create, or delete branches
     checkout       Checkout a branch or paths to the working tree
     clone          Clone a repository into a new directory
     commit         Record changes to the repository
     diff           Show changes between commits, commit and working tree, etc
     fetch          Download objects and refs from another repository
     grep           Print lines matching a pattern
     init           Create an empty git repository or reinitialize an existing one
     log            Show commit logs
     merge          Join two or more development histories together
     mv             Move or rename a file, a directory, or a symlink
     pull           Fetch from and merge with another repository or a local branch
     push           Update remote refs along with associated objects
     rebase         Forward-port local commits to the updated upstream head
     reset          Reset current HEAD to the specified state
     rm             Remove files from the working tree and from the index
     show           Show various types of objects
     status         Show the working tree status
     tag            Create, list, delete or verify a tag object signed with GPG
11년	 8월	 28일	 일요일                                                                    37

More Related Content

What's hot

Git Tutorial
Git TutorialGit Tutorial
Git Tutorial
Sanggyu Nam
 
svn 능력자를 위한 git 개념 가이드
svn 능력자를 위한 git 개념 가이드svn 능력자를 위한 git 개념 가이드
svn 능력자를 위한 git 개념 가이드
Insub Lee
 
Github 사용법
Github 사용법Github 사용법
Github 사용법
jong seok Kim
 
Git 사용법 공유 + Unity3D with git
Git 사용법 공유 + Unity3D with gitGit 사용법 공유 + Unity3D with git
Git 사용법 공유 + Unity3D with git
SeongSik Kim
 
140109 팀프로젝트 협업툴
140109 팀프로젝트 협업툴140109 팀프로젝트 협업툴
140109 팀프로젝트 협업툴
은아 정
 
Git 더하기 GitHub(Git클라이언트 활용) / Getting started with git+github
Git 더하기 GitHub(Git클라이언트 활용) / Getting started with git+githubGit 더하기 GitHub(Git클라이언트 활용) / Getting started with git+github
Git 더하기 GitHub(Git클라이언트 활용) / Getting started with git+github
Junyoung Lee
 
Advanced git
Advanced gitAdvanced git
Advanced git
chanwoo Jeong
 
Git의 개념과 사용
Git의 개념과 사용Git의 개념과 사용
Git의 개념과 사용
환민 홍
 
디자이너를위한Git #1/2
디자이너를위한Git #1/2디자이너를위한Git #1/2
디자이너를위한Git #1/2
Choulhyouc Lee
 
11. git basic
11. git basic11. git basic
11. git basic
Geunhyung Kim
 
Git 사용 가이드
Git 사용 가이드Git 사용 가이드
Git 사용 가이드
도형 임
 
Git tutorials
Git tutorialsGit tutorials
Git tutorials
wonmin lee
 
[NDC16] Effective Git
[NDC16] Effective Git[NDC16] Effective Git
[NDC16] Effective Git
Chanwoong Kim
 
git, 이해부터 활용까지
git, 이해부터 활용까지git, 이해부터 활용까지
git, 이해부터 활용까지
jylee1229
 
오픈소스 공헌을 위한 필수 지식
오픈소스 공헌을 위한 필수 지식오픈소스 공헌을 위한 필수 지식
오픈소스 공헌을 위한 필수 지식
Matthew (정재화)
 
GitHub 실습 교육
GitHub 실습 교육GitHub 실습 교육
GitHub 실습 교육
승엽 신
 
Git branch stregagy & case study
Git branch stregagy & case studyGit branch stregagy & case study
Git branch stregagy & case study
Woo Jin Kim
 
2011년 KTH H3 컨퍼런스 Track B, 세션4 "Advanced Git" by A.J
2011년 KTH H3 컨퍼런스 Track B, 세션4 "Advanced Git" by A.J2011년 KTH H3 컨퍼런스 Track B, 세션4 "Advanced Git" by A.J
2011년 KTH H3 컨퍼런스 Track B, 세션4 "Advanced Git" by A.J
Andrew J. Kim
 
Git이란 (Git 소개 및 기초 이론)
Git이란 (Git 소개 및 기초 이론)Git이란 (Git 소개 및 기초 이론)
Git이란 (Git 소개 및 기초 이론)
승용 윤
 
이클립스로 GIT 사용하기
이클립스로 GIT 사용하기이클립스로 GIT 사용하기
이클립스로 GIT 사용하기
우영 주
 

What's hot (20)

Git Tutorial
Git TutorialGit Tutorial
Git Tutorial
 
svn 능력자를 위한 git 개념 가이드
svn 능력자를 위한 git 개념 가이드svn 능력자를 위한 git 개념 가이드
svn 능력자를 위한 git 개념 가이드
 
Github 사용법
Github 사용법Github 사용법
Github 사용법
 
Git 사용법 공유 + Unity3D with git
Git 사용법 공유 + Unity3D with gitGit 사용법 공유 + Unity3D with git
Git 사용법 공유 + Unity3D with git
 
140109 팀프로젝트 협업툴
140109 팀프로젝트 협업툴140109 팀프로젝트 협업툴
140109 팀프로젝트 협업툴
 
Git 더하기 GitHub(Git클라이언트 활용) / Getting started with git+github
Git 더하기 GitHub(Git클라이언트 활용) / Getting started with git+githubGit 더하기 GitHub(Git클라이언트 활용) / Getting started with git+github
Git 더하기 GitHub(Git클라이언트 활용) / Getting started with git+github
 
Advanced git
Advanced gitAdvanced git
Advanced git
 
Git의 개념과 사용
Git의 개념과 사용Git의 개념과 사용
Git의 개념과 사용
 
디자이너를위한Git #1/2
디자이너를위한Git #1/2디자이너를위한Git #1/2
디자이너를위한Git #1/2
 
11. git basic
11. git basic11. git basic
11. git basic
 
Git 사용 가이드
Git 사용 가이드Git 사용 가이드
Git 사용 가이드
 
Git tutorials
Git tutorialsGit tutorials
Git tutorials
 
[NDC16] Effective Git
[NDC16] Effective Git[NDC16] Effective Git
[NDC16] Effective Git
 
git, 이해부터 활용까지
git, 이해부터 활용까지git, 이해부터 활용까지
git, 이해부터 활용까지
 
오픈소스 공헌을 위한 필수 지식
오픈소스 공헌을 위한 필수 지식오픈소스 공헌을 위한 필수 지식
오픈소스 공헌을 위한 필수 지식
 
GitHub 실습 교육
GitHub 실습 교육GitHub 실습 교육
GitHub 실습 교육
 
Git branch stregagy & case study
Git branch stregagy & case studyGit branch stregagy & case study
Git branch stregagy & case study
 
2011년 KTH H3 컨퍼런스 Track B, 세션4 "Advanced Git" by A.J
2011년 KTH H3 컨퍼런스 Track B, 세션4 "Advanced Git" by A.J2011년 KTH H3 컨퍼런스 Track B, 세션4 "Advanced Git" by A.J
2011년 KTH H3 컨퍼런스 Track B, 세션4 "Advanced Git" by A.J
 
Git이란 (Git 소개 및 기초 이론)
Git이란 (Git 소개 및 기초 이론)Git이란 (Git 소개 및 기초 이론)
Git이란 (Git 소개 및 기초 이론)
 
이클립스로 GIT 사용하기
이클립스로 GIT 사용하기이클립스로 GIT 사용하기
이클립스로 GIT 사용하기
 

Similar to Git 강별

[부스트캠프 Tech Talk] 최재필_P 스테이지에서 Git으로 협업하기
[부스트캠프 Tech Talk] 최재필_P 스테이지에서 Git으로 협업하기[부스트캠프 Tech Talk] 최재필_P 스테이지에서 Git으로 협업하기
[부스트캠프 Tech Talk] 최재필_P 스테이지에서 Git으로 협업하기
CONNECT FOUNDATION
 
Git 기본개념과 사용법 그리고 어플리케이션
Git 기본개념과 사용법 그리고 어플리케이션Git 기본개념과 사용법 그리고 어플리케이션
Git 기본개념과 사용법 그리고 어플리케이션Dabi Ahn
 
리스펙토링 세미나 - Git, Github 알아보기
리스펙토링 세미나 - Git, Github 알아보기리스펙토링 세미나 - Git, Github 알아보기
리스펙토링 세미나 - Git, Github 알아보기
Wooyoung Ko
 
Git basic2 chaos
Git basic2 chaosGit basic2 chaos
Git basic2 chaosYunkyu Choi
 
Git: A Motivating Introduction
Git: A Motivating IntroductionGit: A Motivating Introduction
Git: A Motivating Introduction
Jongwook Choi
 
Git from google techtalks by Randal
Git from google techtalks by RandalGit from google techtalks by Randal
Git from google techtalks by Randalyagurchoi
 
소스트리(SourceTree)로 배우는 Git 사용법
소스트리(SourceTree)로 배우는 Git 사용법소스트리(SourceTree)로 배우는 Git 사용법
소스트리(SourceTree)로 배우는 Git 사용법
주형 고
 
리스펙토링 5월 세미나, git과 github
리스펙토링 5월 세미나, git과 github리스펙토링 5월 세미나, git과 github
리스펙토링 5월 세미나, git과 github
JungHoon Lee
 
Git & GitHub
Git & GitHubGit & GitHub
Git & GitHub
Jongmin Park
 
git-workflow
git-workflowgit-workflow
git-workflow
Aria (In Suk) Kim
 
해커스 가이드 투 깃
해커스 가이드 투 깃해커스 가이드 투 깃
해커스 가이드 투 깃
Jongdeok Kim
 
오픈소스 개발을 위한 Git 사용법 실습
오픈소스 개발을 위한 Git 사용법 실습오픈소스 개발을 위한 Git 사용법 실습
오픈소스 개발을 위한 Git 사용법 실습
BJ Jang
 
Git Tutorial
Git TutorialGit Tutorial
Git Tutorial
MDLicht
 
[17.02.09] Github introduction (Korean Version)
[17.02.09] Github introduction (Korean Version)[17.02.09] Github introduction (Korean Version)
[17.02.09] Github introduction (Korean Version)
Ildoo Kim
 
Git & Github Seminar-2
Git & Github Seminar-2Git & Github Seminar-2
Git & Github Seminar-2
sangyun han
 
Why use git
Why use gitWhy use git
Why use git
Taeung Song
 
Git workflow
Git workflowGit workflow
Git workflow
HANSUK KIM
 
[201808] GitHub 사용하기 - GIt & 협업 활용
[201808] GitHub 사용하기 - GIt & 협업 활용[201808] GitHub 사용하기 - GIt & 협업 활용
[201808] GitHub 사용하기 - GIt & 협업 활용
Ian Choi
 
GitHub로 프로젝트 운영하기
GitHub로 프로젝트 운영하기GitHub로 프로젝트 운영하기
GitHub로 프로젝트 운영하기
Lee Geonhee
 

Similar to Git 강별 (20)

Git
Git Git
Git
 
[부스트캠프 Tech Talk] 최재필_P 스테이지에서 Git으로 협업하기
[부스트캠프 Tech Talk] 최재필_P 스테이지에서 Git으로 협업하기[부스트캠프 Tech Talk] 최재필_P 스테이지에서 Git으로 협업하기
[부스트캠프 Tech Talk] 최재필_P 스테이지에서 Git으로 협업하기
 
Git 기본개념과 사용법 그리고 어플리케이션
Git 기본개념과 사용법 그리고 어플리케이션Git 기본개념과 사용법 그리고 어플리케이션
Git 기본개념과 사용법 그리고 어플리케이션
 
리스펙토링 세미나 - Git, Github 알아보기
리스펙토링 세미나 - Git, Github 알아보기리스펙토링 세미나 - Git, Github 알아보기
리스펙토링 세미나 - Git, Github 알아보기
 
Git basic2 chaos
Git basic2 chaosGit basic2 chaos
Git basic2 chaos
 
Git: A Motivating Introduction
Git: A Motivating IntroductionGit: A Motivating Introduction
Git: A Motivating Introduction
 
Git from google techtalks by Randal
Git from google techtalks by RandalGit from google techtalks by Randal
Git from google techtalks by Randal
 
소스트리(SourceTree)로 배우는 Git 사용법
소스트리(SourceTree)로 배우는 Git 사용법소스트리(SourceTree)로 배우는 Git 사용법
소스트리(SourceTree)로 배우는 Git 사용법
 
리스펙토링 5월 세미나, git과 github
리스펙토링 5월 세미나, git과 github리스펙토링 5월 세미나, git과 github
리스펙토링 5월 세미나, git과 github
 
Git & GitHub
Git & GitHubGit & GitHub
Git & GitHub
 
git-workflow
git-workflowgit-workflow
git-workflow
 
해커스 가이드 투 깃
해커스 가이드 투 깃해커스 가이드 투 깃
해커스 가이드 투 깃
 
오픈소스 개발을 위한 Git 사용법 실습
오픈소스 개발을 위한 Git 사용법 실습오픈소스 개발을 위한 Git 사용법 실습
오픈소스 개발을 위한 Git 사용법 실습
 
Git Tutorial
Git TutorialGit Tutorial
Git Tutorial
 
[17.02.09] Github introduction (Korean Version)
[17.02.09] Github introduction (Korean Version)[17.02.09] Github introduction (Korean Version)
[17.02.09] Github introduction (Korean Version)
 
Git & Github Seminar-2
Git & Github Seminar-2Git & Github Seminar-2
Git & Github Seminar-2
 
Why use git
Why use gitWhy use git
Why use git
 
Git workflow
Git workflowGit workflow
Git workflow
 
[201808] GitHub 사용하기 - GIt & 협업 활용
[201808] GitHub 사용하기 - GIt & 협업 활용[201808] GitHub 사용하기 - GIt & 협업 활용
[201808] GitHub 사용하기 - GIt & 협업 활용
 
GitHub로 프로젝트 운영하기
GitHub로 프로젝트 운영하기GitHub로 프로젝트 운영하기
GitHub로 프로젝트 운영하기
 

Git 강별

  • 1. Git 분산 버전 관리 시스템 -강별- bkang721@gmail.com 11년 8월 28일 일요일 1
  • 2. Category ❖ CVS, SVN ❖ Git 방식이란? ❖ Git 설정하기 ❖ Git 이용하여 개발하기 11년 8월 28일 일요일 2
  • 3. CVS, SVN CVS, SVN CVS(Concurrent Versions System) ; 동시 관리 버전 시스템 저장소의 파일들의 이름을 바꿀 수 없다. SVN(Subversion) ; 자유 소프트웨어 버전 관리 시스템 네트웍 연결이 되지 않으면 자유로운 버전관리가 불가능하다. 11년 8월 28일 일요일 3
  • 4. Git 방식이란? ❖ 저장소(repository)란? ❖ 어떻게 저장 대상을 결정하는가? ❖ 작업 트리(working tree)란? ❖ 어떻게 파일을 조작하고 동기화 하는가? ❖ 어떻게 프로젝트, 디렉토리 그리고 그 안에 포함된 파일을 추적하는가? ❖ 어떻게 태그(tag)를 이용해 마일스톤(milestone)을 기록 하는가? ❖ 어떻게 브랜치(branch)를 이용해 분기 이력을 추적하는가? ❖ 합치기(merge)란 무엇인가? ❖ 어떻게 Git이 파일 잠금을 처리하는가? 11년 8월 28일 일요일 4
  • 5. Git 방식이란? Git 방식의 강점 ❖ 분산 아키텍쳐 - 항상 인터넷에 연결돼있어야 하는 고통 없이 동작한다. ❖ 쉬운 브랜치 만들기와 합치기 - 브랜치를 생성하기가 쉽다. - 비용이 적다. - 속도가 빠르다. - 브랜치를 여러번 나눈 경우라도 간단히 합칠 수 있다. ❖ 서브 버전과 통신 - 회사 내에 자신만이 Git으로 바꿀 준비가 된 유일한 사람이라 면, 모두가 서브버전을 계속 사용하고 있어도 무방하다. 11년 8월 28일 일요일 5
  • 6. Git 방식이란? 저장소(repository)란? 버전 관리 시스템에서 사용자가 변경한 모든 내용을 추적하는 공간. ex) 은행(Bank) 은행 계좌 ➜ 저장소(repository) 은행 거래 내역 ➜ 저장소 이력 돈 ➜ 소스 코드(source code) 입금 ➜ Commit ⦁ Git 방식 : 현금 자동 인출기가 붙어있는 자신 만의 금고(개인은행) ⦁ 중앙 집중식 시스템 : 팀 구성원 모두가 사용하나는 하나의 은행 11년 8월 28일 일요일 6
  • 7. Git 방식이란? 저장 대상을 결정 프로젝트를 진행하는 데 필요한 전부. ex) Source code, Makefile, Rakefile, Ant(build.xml) 등.. 그 외 : 설정 파일 예제, 문서, 이미지 등.. ⦁ Makefile : C/C++ / Rakefile : Ruby / Ant : Java build 11년 8월 28일 일요일 7
  • 8. Git 방식이란? 작업 트리(working tree)란? 모든 변경은 작업트리에서 이루어 진다. 작업트리 ➜ 모든 프로젝트(소스코드, 빌드 파일, 단위 테스트) = 작업 복사본(working copy) 맨 처음의 작업트리는, ❖ 자신의 프로젝트를 저장소에 초기화 하도록 요청 ❖ 기존 저장소의 프로젝트를 복제(clone) 복제하기(clone)는 지역 저장소를 만든 후 기본 흐름인 마스터 브랜 치에서 복사본을 체크아웃(check out) 한다. ⦁ 체크아웃(check out) : 사용자의 작업트리를 저장소의 특정 시점과 일치하도록 변경하는 것 11년 8월 28일 일요일 8
  • 9. Git 방식이란? 파일을 조작, 동기화 ❖ 변경 사항을 커밋(commit)하고 저장소에 새로운 리비전을 추가, 무엇을 변경했는지 로그메시지를 저장 ❖ 바뀐 내용을 다른 개발자가 이용하게 하기 위해서 변경 사항을 공유 ➜ 푸싱(pushing) : 바뀐 내용을 다른 개발자와 공유 ❖ 다른 팀 멤버의 변경 사항을 가져와 최신으로 갱신하여 동기화 완료 ➜ 풀링(pulling) : 다른 멤버의 변경 사항을 나의 저장소와 동기화 변경 사항 가져 오기 ▶ 원격 저장소에 있는 변경 사항의 복사본 생성 ⇔ 푸싱 ▶ 가져온 변경 사항을 지역 이력과 합친다 ⇒ 풀링 11년 8월 28일 일요일 9
  • 10. Git 방식이란? 프로젝트, 디렉토리 안 파일 추적 ❖ 저장 대상을 구조화 ❖ 파일을 내용 단위로 추적 ; 최하위계층 ex) models.py 내 부의 변수나 함수 등을 구성하는 각 문자와 줄을 추적, 이름, 파일 모드(file mode), 심볼릭 파일 여부와 같은 메타데이터(metadata)를 models.py 에 추가 한다. ➜ 저장소의 전체 이력을 저장하는 데 필요한 공간 줄어듬. ❖ 저장소의 구조는 프로젝트 마다 다르다 ; 프로젝트에 알맞게 구성 . ➜ 프로젝트 마다 새로운 디렉토리, or 새로운 저장소 11년 8월 28일 일요일 10
  • 11. Git 방식이란? 태그(tag), 마일스톤(milestone) 추적 ❖ 마일스톤(milestone) ; 일정 간격으로 세워져 있는 이정표. 프로젝트가 잘 진행되고 나아갈 수 있도록 중간 중간의 목표지점 및 체크포인트로서 설정을 해 놓은 것. ➜ 날짜와 목적하는 상태에 대한 서술, 세부 항목들의 체크 리 스트, 중간 점검을 위함. ❖ 태그(tag) ; 저장소 이력의 특정 시점을 기록. 저장소 이력의 특정 위치를 기록해두어 참조 한다. 쉬운 이름을 특정 리비전의 태그에 부여 ➜ 저장소의 이력을 추적 11년 8월 28일 일요일 11
  • 12. Git 방식이란? 브랜치(branch), 분기 이력 추적 마스터 브랜치 ex) ❖ 브랜치를 생성 ➜ 파일이 분기하는 위치가 책 = 저장소, 저장소에 기록됨. 시리즈 = 브랜치 ❖ 다른 브랜치와 분리하여 변경 사항을 지속 적으로 추적, 분기 이력을 생성. ⦁ 마스터 브랜치(master branch) ; 트렁크(trunk) : 개발의 기본 줄기 11년 8월 28일 일요일 12
  • 13. Git 방식이란? 브랜치(branch), 분기 이력 추적 promt > git branch [..] master 릴리즈 브랜치 브랜치 생성 마스터 브랜치 ex) ❖ 브랜치를 생성 ➜ 파일이 분기하는 위치가 책 = 저장소, 저장소에 기록됨. 시리즈 = 브랜치 ❖ 다른 브랜치와 분리하여 변경 사항을 지속 적으로 추적, 분기 이력을 생성. ⦁ 마스터 브랜치(master branch) ; 트렁크(trunk) : 개발의 기본 줄기 11년 8월 28일 일요일 12
  • 14. Git 방식이란? 브랜치(branch), 분기 이력 추적 promt > git branch [..] master 릴리즈 브랜치 브랜치 생성 마스터 브랜치 기타 브랜치 ex) milestone... ex) ❖ 브랜치를 생성 ➜ 파일이 분기하는 위치가 책 = 저장소, 저장소에 기록됨. 시리즈 = 브랜치 ❖ 다른 브랜치와 분리하여 변경 사항을 지속 적으로 추적, 분기 이력을 생성. ⦁ 마스터 브랜치(master branch) ; 트렁크(trunk) : 개발의 기본 줄기 11년 8월 28일 일요일 12
  • 15. Git 방식이란? 합치기(merge)란? 합치기(merge) : 브랜치의 이력을 하나로 합친다. ❖ Git 방식 : 사용자가 직접 하는 방식과 동일. ❖ 파일의 서로 다른 영역이 변경 ➜ Git이 알아서 합친다. 합칠 수 없는 상황 ➜ 오류가 있음을 기록, 사용자에게 충돌 알림. (서로 다른 개발자가 같은 위치를 다르게 수정) ❖ 합치기 추적 ; Git이 합치기 추적 제공. 함께 합쳐진 커밋 내용을 추적, 이미 합쳐진 내용은 다시 합치지 않 음. ➜ CVS 같은 버전 관리시스템에서는 제공 되지 않음. 11년 8월 28일 일요일 13
  • 16. Git 방식이란? Git의 파일 잠금 처리 ex) 도서관에서 책을 빌림 = 체크아웃(check out) strict locking ➜ 내가 사용하는 한 다른 사람 사용 금지. optimistic locking ➜ 다수의 개발자 동시에 접근 가능. ① A 와 B가 모두 저장소의 복사본 생성, 각자 변경. ② 같은 파일의 다른 부분을 편집. ③ A가 자신의 변경 사항을 고유 저장소에 푸싱. ④ B도 자신의 변경 사항을 푸싱. ⑤ Git은 B의 푸싱을 거절. ➜ Why? 11년 8월 28일 일요일 14
  • 17. Git 방식이란? Git의 파일 잠금 처리 ex) 도서관에서 책을 빌림 = 체크아웃(check out) strict locking ➜ 내가 사용하는 한 다른 사람 사용 금지. optimistic locking ➜ 다수의 개발자 동시에 접근 가능. ① A 와 B가 모두 저장소의 복사본 생성, 각자 변경. ② 같은 파일의 다른 부분을 편집. ③ A가 자신의 변경 사항을 고유 저장소에 푸싱. ④ B도 자신의 변경 사항을 푸싱. ⑤ Git은 B의 푸싱을 거절. ➜ 복사본을 만든 후 파일이 변경됐으므로, B는 저장소에서 파일의 변경사항을 풀 링한 후, 충돌된 영역이 있다면 이를 처리 후 다시 서버로 변경사항을 푸싱 해야함. 11년 8월 28일 일요일 14
  • 18. Git 설정하기 ❖ Git 설치하기 ❖ Git 구성하기 ❖ Git 도움말 이용 11년 8월 28일 일요일 15
  • 19. Git 설정하기 Git 설치하기 Linux : $ sudo apt-get build-dep git-core git-doc ➜ git-core와 git-doc 패키지가 의존하는 모든 패키지 설치. $ make prefix=/usr/local all doc ➜ 전체 사용자가 사용할 수 있도록 Git을 설치. $ sudo make install install-doc ➜ 설치 Mac OS X: $ sudo port install git-core +svn +doc ➜ Git과 git-svn을 설치 11년 8월 28일 일요일 16
  • 20. Git 설정하기 Git 설치하기 Window : Cygwin, msysGit 등.. 11년 8월 28일 일요일 17
  • 21. Git 설정하기 Git 설치하기 11년 8월 28일 일요일 18
  • 22. Git 설정하기 Git 설치하기 $ git --version git version 1.7.4 11년 8월 28일 일요일 19
  • 23. Git 설정하기 Git 설정하기(1) $ git config --global user.name “홍길동” $ git config --global user.email “HongGD@git.com” $ git config --global --list 11년 8월 28일 일요일 20
  • 24. Git 설정하기 Git 설정하기(2) ❖ 출력 결과 색 설정 $ git config --global color.ui “auto” 11년 8월 28일 일요일 21
  • 25. Git 이용하여 개발하기 11년 8월 28일 일요일 22
  • 26. Git 이용하여 개발하기 새 저장소 만들기 $ mkdir Project $ cd Project $ git init ❖ 초기에 사용할 어떤 내용물이 있다면, $ tar xzvf MyProject.tar.gz $ cd MyProject $ git init $ git add . $ git commit 11년 8월 28일 일요일 23
  • 27. Git 이용하여 개발하기 커밋 만들기 ① 편집기를 이용하여 작업 디렉토리 상에 변경 사항을 만든다. ② git에게 변경 사항을 알려준다. ③ 위 단계에서 git에게 알려준 내용을 이용하여 커밋을 만든다. $ git commit -m “message” -a # 가장 최신 버전 커밋 $ git commit -m “message” hello.c # 지정 파일만 커밋 11년 8월 28일 일요일 24
  • 28. Git 이용하여 개발하기 차이점 살펴보기 $ git diff # 스테이징 되지않고 커밋되지도 않은 변경 사항 표시. $ git diff --cached # 스테이징되지않은 변경 사항 표시 안함. $ git diff HEAD # 작업트리, 스테이징된 변경 사항, 저장소의 모든 차이점을 비교함. 11년 8월 28일 일요일 25
  • 29. Git 이용하여 개발하기 변경 사항 추적하기(1) $ git status 11년 8월 28일 일요일 26
  • 30. Git 이용하여 개발하기 변경 사항 추적하기(2) $ git log $ git log -1 11년 8월 28일 일요일 27
  • 31. Git 이용하여 개발하기 브랜치 만들고 사용하기 $ git branch # 이 저장소 내의 모든 로컬 브랜치 $ git branch RB_1.0 master # 생성하려 것, 분기해 나올 것. $ git checkout RB_1.0 # 브랜치를 RB_1.0으로 변경. ❖ 마스터 브랜치를 변경 했다면, 릴리즈 브랜치에는 없는 내용이다. 11년 8월 28일 일요일 28
  • 32. Git 이용하여 개발하기 브랜치 합치기 $ git merge RB_1.0 # RB_1.0 브랜치의 변경 사항이 master 브 랜치에 합쳐진다. $ git merge --squash hello.c # 모든 커밋을 하나의 커밋으로 밀어넣는다. 11년 8월 28일 일요일 29
  • 33. Git 이용하여 개발하기 릴리즈 다루기 $ git tag 1.0 RB_1.0 $ git tag 1.0 hello.c 변수 추가 릴리즈 브랜치 hello.c 추가 hello.c 1차 수정 hello.c 1차 수정 마스터 브랜치 11년 8월 28일 일요일 30
  • 34. Git 이용하여 개발하기 릴리즈 다루기 $ git checkout master $ git rebase RB_1.0 $ git branch -d RB_1.0 $ git branch RB_1.0.1 1.0 hello.c 변수 추가 $ git checkout RB_1.0.1 릴리즈 브랜치 hello.c 추가 hello.c 1차 수정 hello.c 1차 수정 마스터 브랜치 11년 8월 28일 일요일 31
  • 35. Git 이용하여 개발하기 릴리즈 다루기 $ git checkout master $ git rebase RB_1.0 $ git branch -d RB_1.0 $ git branch RB_1.0.1 1.0 $ git checkout RB_1.0.1 hello.c 추가 hello.c 1차 수정 hello.c 변수 추가 hello.c 1차 수정 1.0 11년 8월 28일 일요일 31
  • 36. Git 이용하여 개발하기 릴리즈 다루기 $ git archive --format=tar --prefix=Project-1.0/ 1.0 | gzip > Project-1.0.tar.gz # --format ; Git이 생성할 출력 파일의 형식 # --prefix ; 1.0 의 모든 내용을 Project-1.0/ 디렉토리 아래 포함. # | gzip > ; git archive에 의한 tar파일을 파이프라인으로 연결하여, gzip으로 압축. $ git archive --format=zip --prefix=mysite-1.0/ 1.0 | gzip > mysite-1.0.zip 11년 8월 28일 일요일 32
  • 37. Git 이용하여 개발하기 원격 저장소 복제하기 $ git clone git://git.kernel.org/pub/scm/git/git.git # git 프로그램 ❖ 생성된 디렉토리에는, 프로젝트 파일의 복사본들(= 작업트리)과 프로젝트의 변경 이력에 대한 모든 정보를 포함하고있는 “.git”라는 최상위 디렉토리가 존재. 11년 8월 28일 일요일 33
  • 38. Git 이용하여 개발하기 변경 사항 푸싱하기 ❖ 프로젝트 구성원과 변경사항을 공유하도록 상위 저장소에 변경 사 항을 푸싱한다. $ git push $ git push --dry-run # 푸싱된 변경 사항 확인. ❖ 아무 매개변수 지정하지 않으면, origin 저장소에 동일한 이름의 브랜치로 동기화. 11년 8월 28일 일요일 34
  • 39. Git 이용하여 개발하기 새로운 원격 저장소 추가하기 ❖ 쉽게 말하면 내 저장소에 다른 저장소를 동기화. ❖ 기본 원격 저장소는 origin 이라고 명명하며, 복제한 저장소의 전 체 이름에 대한 별칭이다. $ git pull git://ourcompany.com/dev-erin.git $ git remote add erin git://ourcompany.com/dev-erin.git $ git pull erin HEAD ⦁ 읽기나 쓰기 권한이 있다면 어떠한 저장소에서도 푸싱하거나 풀링 할 수 있다. 11년 8월 28일 일요일 35
  • 40. 로컬 컴퓨터에서 생성된 Git 이용하여 개발하기 프로젝트를 원격 저장소에 추가 $ git remote add origin git@example.com:/repos/pocus.git $ git push origin master ❖ 변경 사항을 푸싱하려는 저장소가 기본 저장소라면 원격 저장소를 origin으로 별칭을 지정한다. ⦁ 읽기나 쓰기 권한이 있다면 어떠한 저장소에서도 푸싱하거나 풀링 할 수 있다. 11년 8월 28일 일요일 36
  • 41. The most commonly used git commands are: add Add file contents to the index bisect Find by binary search the change that introduced a bug branch List, create, or delete branches checkout Checkout a branch or paths to the working tree clone Clone a repository into a new directory commit Record changes to the repository diff Show changes between commits, commit and working tree, etc fetch Download objects and refs from another repository grep Print lines matching a pattern init Create an empty git repository or reinitialize an existing one log Show commit logs merge Join two or more development histories together mv Move or rename a file, a directory, or a symlink pull Fetch from and merge with another repository or a local branch push Update remote refs along with associated objects rebase Forward-port local commits to the updated upstream head reset Reset current HEAD to the specified state rm Remove files from the working tree and from the index show Show various types of objects status Show the working tree status tag Create, list, delete or verify a tag object signed with GPG 11년 8월 28일 일요일 37