Git 간단정리

Yerin·2020년 3월 13일
0
post-custom-banner

Git

Git은 Version Control System이다. 즉, 소스코드의 변경사항 내역을 관리하는 시스템이다.

기능

  • 코드 변경사항 내역 기록 및 관리
  • 필요시 이전 상태로 rollback
  • 팀 단위로 개발시 체계적이고 효과적인 협업

Basics

  • committed: 수정사항들이 git에 저장이 된 상태를 committed이라고 한다.
  • modified: 말그대로 수정된 파일, 아직 커밋이 되지 않은 상태의 파일을 말한다.
  • staged: staged file은 modified한 후에 곧 커밋될거라고 마크해놓은 상태이다. 이렇게 중간 상태가 있는 이유는, 커밋하기 전에 중간 상태를 저장할 수 있도록 하기 위해서이다. 커밋을 하면 commit history에 남기도 하고, 커밋 후에도 되돌릴 수 있지만 까다롭기 때문에 중간상태를 저장해놓는다. 커밋은 해당개발이 완료됐음을 의미하기 때문에 중간 상태를 저장하기 위해 staging을 사용한다.

flow

  • git repository를 checkout한다.
  • 소스코드를 수정한다. 즉 개발을 한다.
  • 수정한 파일을 stage한다.
  • 계속해서 소스코드 파일들을 수정해나간다.
  • commit할 준비가 될때까지 반복한다.
  • 완료되면 커밋한다.

git commands

  • git init: 프로젝트를 git repository로 만들기 위해 사용.
  • git add: modified 파일들을 staged상태로 옮기고자 사용. git repo에 새로 추가된 파일들을 staged상태로 옮길때도 사용된다. 새로 추가된 파일들은 untracked 파일이라고 하는데, 깃에서는 이들도 수정사항이라고 본다.
  • git diff: 어떤 수정사항들이 적용되었는지 보고자 할때 사용. staged인 상태는 볼 수 없고 modified된 파일만 볼 수 있다.
  • git status: 현재 상태를 보여주는 명령어이다.
  • git log: commit 내역들을 보여준다. tig 같은 툴도 있다.
  • git rm: 원하는 파일을 git repo에서 삭제하고 싶을때 사용.
  • git mv: 원하는 파일을 git repo에서 이동시킬때 사용.
  • git branch: 브랜치를 새로 생성할때 쓴다.
  • git checkout: 브랜치를 체크아웃할때 쓴다.
  • 더 많은 명령어는 이곳을 참고:https://www.git-tower.com/blog/git-cheat-sheet

branch & merging

  • 깃을 사용할때는 브랜치 기반으로 개발한다.
  • 깃은 데이터를 단순히 변경사항으로 저장하지 않는다. 깃은 파일의 스냅샷의 연속으로 저장한다. 새오 커밋이 들어오거나 프로젝트 상태를 저장할때마다 파일이 존재하는 그 순간을 중요하게 여긴다. 그래서 파일이 달라지지 않았으면 깃은 빠른 성능을 위해 파일을 새로 저장하지 않고 이전 상태릐 파일에 대한 링크만 저장한다.
  • 스냅샷으로 저장되어 있어서 개발자가 central server에서 새로 레파지코리를 체크아웃해서 받으면, 해당 리포의 어느 특정 시점의 스냅샷을 체크아웃 받는다.
  • 기준이 되는 스냅샷은 master branch이다. 개발자들은 master branch를 먼저 체크아웃하고 거기로부터 자신만의 브랜티를 만든다. 이것을 feature branch라고 하고 개발 후에 커밋을 하면 나중에 마스터 브랜치와 합친다. 이것을 merge한다고 한다.
profile
졸꾸 !!!
post-custom-banner

0개의 댓글