실전 압축 Git

devheyrin·2022년 11월 27일
0

Git

목록 보기
1/2

Git 이란?


버전을 편리하게 관리할 수 있도록 도와주는 도구

작업 히스토리 중 원하는 순간으로 돌아갈 수 있는 타임머신과 같다.

VCS

  • 버전 관리 시스템, Git 역시 버전관리 시스템 중 하나이다.
  • 코드 뿐 아니라 텍스트파일, 레이아웃파일 등 다양한 파일들의 버전을 관리하기 위해 사용할 수 있다.

Centralized Version Control

  • 중앙화 버전 관리 시스템
  • CVS, SVN
  • 하나의 서버에 새 버전을 업데이트해서 모든 개발자들이 서버의 버전을 공유하는 방식
  • 서버에 문제가 생기면 복구 불가능
  • 오프라인에서 작업 불가능

Distributed Version Control → Git!

  • 분산 버전 관리 시스템
  • 모든 개발자들이 동일한 개발 히스토리를 공유
  • 서버에 문제가 생겨도 개발자들의 히스토리를 사용해 복원 가능
  • 오프라인에서도 작업 가능

git init


  • 의미 : 현재 디렉토리를 git으로 관리하겠다!

  • git init 후 확인해보면 연두색의 master 표시와 함께 .git 폴더가 새로 생긴 것을 확인할 수 있다. 이 폴더에 버전 관리를 위한 정보들이 기록된다.

git add


  • 의미 : 파일의 변경 사항을 Staging Area에 올리기
  • Staging Area란 ? 커밋 대기 파일들이 올라가는 곳

  • 세 개의 파일을 만들고 git status로 확인해보면, Untracked files에 새로 만든 세 개의 파일이 표시된다.

  • git add 명령을 사용해 파일을 staging area에 올릴 수 있다.
  • 개별 파일을 올릴 수도 있고, *.txt 처럼 같은 확장자 파일만 올릴 수도, . 으로 모든 파일을 올릴 수도 있다.

git commit


  • 버전 만들기
  • commit을 통해 add에 올라와 있던 변경사항들을 하나의 버전으로 만들 수 있다.
  • 한 번 커밋된 파일을 수정한 뒤 새 버전을 만들려면 다시 add후 commit해야 한다.

Commit Message

  • 이 버전이 생긴 이유를 작성한다.

git log

  • 지금까지 생긴 버전(commit) 기록을 확인할 수 있다.
commit 8b1db43ff115a749981723d2d5cc7765eaf60701 (HEAD -> master)
Author: devheyrin <devheyrin@gmail.com>
Date:   Mon Oct 10 01:31:58 2022 +0900

    Title
    Message

commit 944dc61989348f15819e6fb02a0ac5e1f4e324f8
Author: devheyrin <devheyrin@gmail.com>
Date:   Mon Oct 10 01:30:04 2022 +0900

    first commit
(END)

이상적인 커밋

  • 커밋 하나는 하나의 작업을 담고 있는 것이 가장 이상적!
  • 로그인 모듈, 회원가입 모듈, 디자인 변경 등 의미 있는 단위로 커밋(버전)을 관리하는 것이 바람직하다.
  • 커밋 시기를 놓치더라도 git add를 적절히 사용해서 필요한 내용만 커밋할 수 있다!

커밋의 효용 - log, diff, reset

git log -p

  • 각 커밋별로 이전 커밋과의 차이점을 확인할 수 있다.

git diff

  • 커밋 아이디와 함께 명령을 치면 두 커밋 간의 차이를 보여준다.
  • ee21d74b97032d73d0f3022b498f4f5676ca6ee0
  • 2bb6faca6339a706f1febab8bdcfdebab1ec6e9d

git reset, git revert

  • 최신 버전으로 만들고 싶은 커밋 아이디를 git reset과 함께 쓰면 해당 버전을 최신 버전으로 리셋된다!
  • 단, 팀원들과 협업중인 프로젝트는 리셋하면 안된다!
git reset 944dc61989348f15819e6fb02a0ac5e1f4e324f8 --hard

branch


  • 고객사에게 제공할 특별한 기능을 추가해야 하는 경우
  • 나중에 버릴 수도 있는 기능을 추가해야 하는 경우
  • 새 기능을 테스트해보아야 하는 경우
  • 등등과 같이 어떤 필요에 의해 작업을 분기해야 하는 상황 → 브랜치를 만든다!

master

  • git 생성과 동시에 생기는 기본 브랜치

git branch

  • 새 브랜치를 생성한다.
  • 어떠한 브랜치(ex. master)에서 새 브랜치를 생성하면, 새로 생성된 브랜치는 자기를 생성한 브랜치의 상태를 그대로 복사한다.

git checkout 새 브랜치

  • 기존 브랜치에서 체크아웃하고 새 브랜치로 체크인한다.

branch 정보 확인

git log --branches --decorate
git log --branches --decorate --graph

branch 병합 - merge

  • exp를 master로 가져올 거라면 master로 체크아웃한 상태에서 exp를 merge한다.
git merge exp_add

브랜치 삭제

git branch -d exp_add
💡 Fast-Forward 와 Recursive Fast-Forward - 새로운 커밋을 만들지 않고, 최신 커밋을 가리킨다. Recursive - 새로운 커밋을 생성한다.

stash


  • 브랜치 작업 중 다른 브랜치로 이동해서 작업해야 할 때, 기존 작업을 커밋하기에는 애매한 경우 사용하는 기능!

git stash

  • 작업 중이던 내용 숨기기
  • 숨김 처리 후 다른 브랜치로 이동해 작업한다.

git stash apply

  • 숨긴 내용 다시 복원하기
  • 다른 브랜치의 작업이 끝난 후, 다시 돌아와 복원시킨다.

git stash drop

  • 최신 stash 삭제
profile
개발자 헤이린

0개의 댓글