TIL : Git - Basics

군밤먹으면서코딩·2021년 6월 3일
0

git

목록 보기
1/2
post-thumbnail

Git을 왜 사용할까??

git은 VCS(virsion control system)중에서도 Distributed Version Control을 지향한다!🧐 (이게무람ㅎㅎ) 즉, 서버에만 history를 가지는게 아니라 각각의 개발자 모두가 history를 가지고 있는다! 이러면 서버에 문제가 생기거나 offline 상황에서도 작업이 가능한 장점을 가진다

git은 프로젝트가 진행되는 동안 각각의 버전을 snapshot을 통해 가지고 있다! 이렇게 프로젝트의 전체적인 부분을 snapshot 형태로 가지고 있다보니 각각의 version들을 쉽게 왔다갔다 할 수 있다! (뭔가 위험해 보이는거 해보고싶을때 남모르게 가능...)

  • 이 때, 각각의 snpashot은 그렇게 무겁지 않은데 변경되지 않은 부분들(파일들)은 이전의 링크를 가리키기 때문!

장점

  • 많은 개발자들이 사용
  • 오픈소스
  • 무료 사용
  • 가볍고 빠르다
  • 오프라인 작업 가능
  • 코드의 유지보수 용이

Work flow

git에는 총 3가지의 작업 환경으로 나뉜다.

working directory

말 그대로 우리가 작업하는 공간! Untracked / Tracked으로 다시 나뉠 수 있다.

  • Untracked은 새로 만든 파일 / 기존의 프로젝트에서 git을 초기화 했을 때
  • Tracked는 말 그대로 git으로 tracking되는 파일들을 말한다. (git으로 관리되고 있다아아 이마리야아아)
  • Tracked는 다시 modified / unmodified로 나뉘어 지는데, 이전 버전과 비교하였을때 modified된 파일들만 'staging area'로 넘어갈 수 있다!

staging area

특정 작업을 마치고 버전 history에 올라갈 준비가 된 녀석들을 옮겨놓는 장소 ( commit 준비 완료!)

  • staging area에 있는 파일들을 commit(스냅샷!!)이라는 명령어를 통해 git directory로 보낸다!
  • 이때 각각의commit에는 스냅샷을 통해 저장된 고유의 해쉬코드가 부과된다. 이를 참조해 각각의 버전에 접근할 수 있는 것.

.git directory

버전에 history를 가지고 있는 장소

  • git directory에 저장된 각각의 버전들은 checkout이라는 명령어를 통해 원하는 버전으로 돌아갈 수 있다!
  • 여기가지 저장된 git history들은 local에 저장된 것이기 때문에, 내 컴퓨터가 문제가 생기면 history가 다 날아갈 수도 있다!!
  • 이같은 문제를 방지하기 위해 보통 GitHub과 같은 서버에 push 명령어를 사용해 서버에 업로드 할 수 있다.
  • 서버에서 내 컴퓨터로 가져올 때는 pull 명령어

사용법

문돌이가 카페에서 그렇게 멋있어 보였던 CLI 환경에서 작업한다.😄

cmd + ~ : vscode에서 터미널 열기

1) 시작하기

  • git init : 깃을 초기화 한다. 이 프로젝트(폴더)가 git으로 관리된다!!! 라는 신호
  • git config --global name "my name" : 이름 등록
  • git config --global email "my email" : 이메일 등록

2) 상태 확인하기

  • git status

현재 어떤 branch로 작업하고 있는지, commit의 유무, 현재 파일들의 상태를 확인할 수 있다. 위 사진은 untracked된 파일들이 있으니 add를 통해 3가지 untracked된 파일 3가지를 tracked 상태로 만들어 봐라아~ 라고 하는것.

TIP!

  • 반복되는 명령어를 단축해서 사용하고 싶다면
  • git config --global alias.st status
  • 이러면 status 명령어를 st로 사용 가능!

3) 스냅샷 찍기!

  • git add a.txt : a 파일을 staging area에 올려줘!
  • git add *.txt : txt파일 전부를 staging area에 올려줘!
  • git add . : 모든 파일 staging area로!
  • git rm --cached * : staging area에 올라와 있는 파일들을 다시 working directory로 돌려보내기 ( untracked된 상태로 되돌아간다)

4) 버전 만들어보기

  • git commit -m "추가할 메세지" : staging area에 있는 변경된 내용들을 git directory로 옮겨준다.
  • git log : commit한 기록들을 볼 수 있다.

5) commit을 해야할 작업 범위 && 커밋 메세지 작성 TIP

  • 뭉탱이로 commit 하지 말자. 코드의 유지 보수가 어려워진다.
  • 하나의 작업단위 -> commit ex)프로젝트 세팅,navbar 추가 ...
  • 커밋메세지는 동사로!
    • git commit -m 'add navbar'
    • git commit -m 'initialize project'

6) 이전의 버전으로 돌아가기

두가지 방법 존재

6-1) 과감한 방법

  • git reset [돌아갈 버전의 hashcode 6자리] --hard
  • 이 방법은 돌아간 이후의 행적을 완전히 지워버린다.
  • 때문에 git log에서도 확인 불가!

6-2) 소심한 방법

  • :wq 입력
  • reset과는 다르게 log를 찍어보면 revert한 log가 찍혀있다.

7) 새로운 branch생성

추가적인 branch를 파서 작업을 하면, 기존 프로젝트에 영향을 주지 않고도 내가 해보고 싶은 작업들을 자유롭게 해볼 수 있다!! 말그래도 별도의 새로운 가지를 파는 것!

  • git branch : 생성된 branch들과 현재 적용되어 있는 branch를 확인할 수 있다.
  • git branch [사용할 branch 이름] : 새로운 branch 생성
  • git checkout [변경할 branch 이름]: 이동하고 싶은 branch로 이동!

0개의 댓글