[progit] ch2. git-basics

타미·2021년 1월 12일
0

Hello Git

목록 보기
1/1
post-thumbnail

저장소 만드는 방법

  1. 로컬 디렉토리를 Git 저장소에 적용하는 방법

    git init

  2. Git 저장소를 clone하는 방법

    git clone

    • 프로젝트 히스토리를 전부 받아온다.
    • 최신 버전의 checkout 된다.
    • 자동으로 해당 저장소가 origin 저장소가 된다.

→ 기본 파일 (뼈대 파일, Skeleton, .git 디렉토리)가 생성된다.

수정하고 저장소에 저장하기

  • working directory (우리가 작업하는 git local directory)

git 파일 상태

  • tracked (관리 대상)

    git이 알고 있는, 관리하는 파일

    • modified
      • 마지막 커밋 이후로 수정한 상태
    • unmodified
      • 마지막 커밋 이후로 아무것도 수정하지 않은 상태
    • staged
      • 커밋으로 저장소에 기록할 대상
      • modified된 파일 중 커밋으로 기록할 파일은 stage 시킨다.
  • untracked (관리 대상 ❌)

    한 번도 커밋된 적 없는 파일

상태 확인하기

git status

$ git status
On branch master
Your branch is up-to-date with 'origin/master'.
Changes to be committed:
  (use "git reset HEAD <file>..." to unstage)

    new file:   README
    modified:   CONTRIBUTING.md

git status -s git status —short

$ git status -s
 M README
MM Rakefile
A  lib/git.rb
M  lib/simplegit.rb
?? LICENSE.txt
  • M : Modified
  • A : Add된 파일, (Staged)
  • ?? : Untracked

git add

커밋할 파일을 add하여 staged 상태로 만든다.

  • untracked 파일 → tracked + staged
  • tracked 파일 → staged

Staged 파일 → Unstaged

git reset HEAD 파일명

이전 commit 상태로 되돌리기

git checkout — 파일명

파일 A (hello) → commit → 파일 A 수정 (hello world)

파일 A를 commit된 상태(hello)로 되돌릴 때

pull과 fetch

  • pull
    • 리모트 저장소의 데이터를 모두 로컬로 가져온다.
    • 자동으로 merge한다.
  • fetch
    • 리모트 저장소의 데이터를 모두 로컬로 가져온다.
    • 자동으로 merge하지 않는다.

      remote에서의 변경 정보는 받아왔지만, local branch에서의 HEAD가 그 변경에 따라가지 않아서 변경이 보이지 않음

태그

  • 릴리즈할 때 버전 관리에 사용된다.
  • 태그는 커밋 단위로 적용된다.
    • 브랜치 단위 X
    • 하나의 tag는 하나의 commit만 가르킬 수 있다.
    • 여러 개의 커밋을 하나의 tag로 묶는 줄 알았는데 아니당
  • 태그는 별도로 push해야 반영된다.
    • 태그를 붙인 후 push하면 태그 정보가 반영되지 않는다.
    • git push origin tag이름 git push origin --tags

태그의 종류

  • Lightweight
  • Annotated
    • 태그를 만든 사람, 이메일, 날짜, 메시지를 저장
profile
IT's 호기심 천국

0개의 댓글