ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Git 입문하기
    Git/기본 2016. 11. 10. 21:21

    알 수 있는 것

    • Git의 기본적인 내용과 사용법이 있다. 쉽고 필수적인 내용들을 순서대로 적었다.
    • Git으로 원격 레포지토리에 업로드 할 수 있다. 원격 레포지토리로써 Github를 사용한다.
    • Git을 처음 사용하는 사람들에게 유용하다.

    Git을 사용하려는 이유

    • Git을 사용하면 소스 코드에서 무엇이 변경 됐는지, 누가, 언제, 왜 바꾸었는지, 복구는 어떻게 하는지 등을 쉽게 알 수 있다.
    • Git과 같은 버전관리시스템 활용은 개발자라면 필수 덕목 중 하나가 되었다.

    이 글을 쓴 후

    • 해보니 정말 쉽고 재밌으며, 이것을 왜 이제야 알게 되었나 아쉽기까지 하다.

    Git

    • 분산 버전 관리 시스템으로, 리누스 토발즈가 개발했다.
    • 프로그램을 개발할 때 매우 유용하며 대규모 프로젝트에서 협업 시 특히 유용하다.

    GitHub

    • Git 저장소 호스팅 서비스. Git으로 Github를 원격 저장소로써 활용할 수 있다.
    • 오픈소스 소프트웨어 개발 관리 웹 사이트로 프로그래밍 협업 기능을 제공한다.
    • 유명하고 다양한 오픈소스 프로젝트들이 이 사이트에 소스를 다 공개해놔서, 오픈소스 소프트웨어의 허브라고도 불린다.
    • Github는 프로그램 개발 히스토리가 남으므로, 많은 개발자들이 포트폴리오로써 활용하기도 한다.
    • Github 외에도 유명한 git hosting 사이트들.
      • sourceforge
      • codebase
      • Bitbucket

    Git의 필수 개념

    • Git의 세가지 상태

      • Working Directory
        • 현재 우리가 작업하는 영역으로, 실제 파일들이 위치한다.
        • 프로젝트의 특정 버전을 checkout하면 이 영역에 위치하게 된다.
        • add하면 이 영역의 파일들이 staging area로 이동한다.
      • Staging Area = Index
        • 이 영역의 파일을 commit하면 Git Directory(로컬 저장소)로 이동된다.
      • Git Directory = Repository = 로컬 저장소
        • Git으로 관리되는 프로젝트 정보가 저장되는 영역이다.
        • git init 명령어를 통해 초기화하거나, 다른 프로젝트 저장소를 clone하면 생성된다.

    Git을 통한 작업순서

    • working directory에서 파일을 수정한다. 소스코드파일에 코드를 추가하거나 변경하는 일들이 된다.
    • working directory에서 변경된 파일을 staging area에 추가한다.
      • 다시 말하면, commit 할 snapshot을 생성하는 것이 된다.
    • staging area의 파일을 commit하면 git directory에 영구적으로 저장할 수 있다.

    파일의 상태

    • 파일의 네가지 상태
      • untracked
        • Git이 파일의 변경을 추적하지 않는 상태
      • unmodified
        • 추적 중인 파일이 수정되지 않은 상태
      • modified
        • 추적 중인 파일이 수정된 상태
      • staged
        • staging area에 추가된 상태
    • 파일의 라이프사이클

    Git 실습 시작하기

    • git 설치하기
      • $ sudo apt-get install git
    • git 저장소 생성
      • $ git init
        • .git directory가 생성된다.
        • 마침표가 붙은 파일은 숨겨진 파일, hidden file이다!
          • 리눅스, 유닉스에서는 파일명 앞에 점을 하나 찍어 파일을 숨긴다.
          • 그래서 ls로 디렉토리를 볼 때 -a옵션을 붙이면, 숨겨진 파일도 볼 수 있다.
    • 사용자이름과 이메일 설정
      • $ git config user.name "Night Good"
      • $ git config user.email "goodnight@good.com"
        • commit을 할때마다 설정된 사용자 이름과 이메일 정보를 사용한다. 이름, 이메일을 등록한다.
    • .gitignore 파일추가
      • .gitignore에 적용된 패턴에 해당하는 파일을 git을 통해 추적하지 않는다.
      • node앱을 작성할 때, node_modules폴더까지 다 추적하고 원격 레포지터리에 추가하면 시간과 공간이 낭비이므로 .gitignore에 추가한다.
    • staging area에 추가하기
      • $ git add .
        • 현재 디렉토리 하위의 모든 파일을 staging area로 추가한다.
      • $ git add <특정 파일 이름>
        • 특정 파일을 staging area로 추가한다.
      • $ git add -A
        • 모든 변경된 파일을 추가함
    • commit하기
      • $ git commit -m "[메시지]"
        • commit 시 메시지가 꼭 포함되어야 한다. 수정 후 확정하여 저장할 것이므로, 설명이 필요하다.
    • 파일 상태 확인하기
      • $ git status
    • commit 로그 확인하기
      • $ git log

    branch 활용해보기

    • 소스코드 생성(임시로 code.txt라 정함)

    • git status 확인

    • git add 하기

      • 모든 파일들을 staging area에 추가
    • git commit하기

      • .git directory에 추가됨
    • commit 로그 확인

    branch를 활용하여 code 수정하기

    • branch 생성하기
      • $ git checkout -b [branch이름]

      • abranch를 생성하면서 checkout함
      • checkout이란 working directory로 가져오는 것
    • git branch로 branch목록과 현재의 branch 확인

      • *표시로 현재의 branch가 금방 만든 abranch임을 알 수 있다. checkout했기 때문이다.
    • code수정

    • 변경된 내용 확인하기
      • $ git diff
      • $ git diff [원래 branch] [비교할 branch]

    • git 확인하기.

    • git add로 staging area에 추가

    • git commit하여 git directory에 추가

      • commit 되었으니, working directory가 비워짐!
    • git log로 commit로그 확인하기

    • 특정 branch로 checkout하기
      • $ git checkout [checkout할 branch]
      • master branch로 checkout

        • *표시가 master에 있다.
      • 여기서 code를 확인하면

        abranch에서 code를 변경했던 부분이 보이지 않는다.

        즉, master branch에서 code는 변경하기 전임을 알 수 있다.

    • branch 합치기
      • merge를 적용할 branch로 이동checkout하기
        • $ git checkout <이동할 branch>
      • merge 실행
        • $ git merge <수정된 branch>
        • 현재의 branch에 수정된 branch를 가져와 합친다.
      • 예제에서 abranch를 master로 merge할 것이므로, master로 checkout한 후, abranch를 merge하겠다.

      • code를 보면

        • 수정된 code가 master branch에 적용되었다.
    • branch 삭제하기
      • 더 이상 특정 branch를 사용하지 않는다면, 삭제할 수 있다.
      • $ git branch -d <삭제할 branch>

    GitHub에서 원격 저장소에 업로드하기.

    • github로 내 계정으로 가서 new repository생성하기
    • 원격 repository 설정(add)하기
      • $ git remote add <레포지토리 이름> <github의 repository URL>
      • $ git remote -v로 원격 repository 등록 확인

    • 원격 repository에 로컬의 git directory의 파일들을 업로드(push)
      • $ git push <remote> <branch>
      • origin이라는 원격 repository에 로컬의 master branch를 push하겠다.

    • github에 가보면
      • 로컬 작업 내용이 github의 repository에 업로드 된 것을 확인할 수 있다.


Designed by Tistory.