연습

  1. 프로젝트 폴더를 만든다.
  2. git init 으로 저장소 생성
  3. 파일을 만들고 2개의 commit을 만든다. (git add “file name”, git commit -m “commit message”)
  4. 시간여행을 해보세요.(git checkout “commit id”, git checkout master)
  5. branch 생성 (git branch exp, git checkout exp) ⇒ (git checkout -b exp)

→ 헤드가 master와 exp를 둘다 가르키고 있다. 즉, 헤드가 exp를 가르키도록 해주어야 한다.

  1. 다음의 과정을 각각의 브랜치에서 진행한다.

→ exp 브랜치: exp.txt 파일 생성, master branch: master.txt 커밋

(git add exp.txt, git commit -m “exp1”) , (git add master.txt, git commit -m “master 1”)

  1. 병합한다.
  2. (head → master) git merge exp → vi editor뜨면 ((esc) → :wq)

 

버전 관리의 필요성

  • 프로젝트를 진행하다 보면 버그가 발생한다.
    • 버그의 종류
        1. 행복한 버그 = 문법 에러 Why? 해결하지 않으면 프로그램이 돌아가지 않아서
        1. 개 같은 버그 = 기획자의 의도와 다르게 진행 됨. 등등
      • → 버그가 발생하지 않은 버전을 찾기 위해서 버전 관리가 중요하다.

.git 파일

  • 숨겨져있음.
  • 레파지토리, 저장소
  • git init 으로 생성
  • git config —global user.name “이름쓰기”

 

터미널을 git bash를 사용

 

working dir

우리가 사용하고 있는 프로젝트 파일 모든 것

stage area

우리가 commit하기 전에 대기하고 있는 대기소, 장바구니.

git은 working directory를 고려하지 않는다. commit을 하기 전에 stage에 올라간 것만 확인하고 commit한다.

master는 마지막 작업을 가르킨다.

head는 현재 작업을 가르킨다.

(head→master 가 아닐 경우)새 버전의 부모는 Head다.

detached head state라고 한다.

(head→master 일 경우) master 와 head는 새로운 버전을 가르킨다.

마지막 커밋으로 직접 head를 움직여줬다면 마스터는 헤드를 따라오지 않기 때문에 오류가 생길 수 있기 때문이다. 따라서 마지막 거로 갈거면 git checkout master를 써서 마스터로 head를 마스터를 가르키도록 만들어 줘라

 

깃은 어떠한 버전도 지우지 않고 수정하지 않는다. = 불변성 = 안정성

이전 작업으로 가고 싶다면

git chechkout “이전 작업의 주소”

 

실험이 끝났다면 master가 exp branch를 병합한다.

마스터에서 exp를 병합하기 위해서는 우선 head → master인 상태가 되어야 한다.

 

그 후 Merge 합니다.

Merge한 버전의 parent는 master1, exp1 이다. 즉, master와 병합한 branch이다.

master에 merge한 결과를 과거로 돌리고 싶다면 reset을 하면 된다.

exp가 master를 병합한다. => master를 업데이트 한다. 실험이 끝났다면, master가 exp(branch)를 병합한다. -> 'merge' into current branch 새로운 version의 부모는 master, exp(branch)이며 master는 새로 만들어진 version을 가리킨다. 병합을 취소하려면 'reset' current branch

git 명령어

git config user.name = user name 확인

git config user.email = email 확인

git init

git status = 제일 많이 사용하게 될 명령어

git add “파일 이름” = 명령어를 사용해서 스테이지에 올릴 수 있다.

git commit -m “커밋 이름” = 커밋한다.

git log = git commit log를 확인할 수 있다.

git log --oneline = 한줄로만 나오게 하는 log

git log --oneline --all = 전체 commit을 출력

git checkout ‘커밋 주소’ = 커밋 주소의 상태로 working directory를 이동시킨다.

git checkout master

git reflog = 모든 행동에 대한 정보가 담긴 로그 why? 깃을 어떠한 버전도 지우지 않고 수정하지 않는다.

git branch “branch_name” = 브랜치 생성

git merge “target branch”

git reset

+ Recent posts