[Git] Git

Steve·2021년 4월 15일
0

웹개발 코스

목록 보기
6/59

Version Control System

버전을 관리하는 시스템.
이전 버전으로 돌아가거나, 어떻게 변화했는지 쉽게 알 수 있다.

'분산형 버전 관리 시스템'(Distributed Version Control)
변화가 생길 때마다 백업 복사본(스냅샷)이 생성되는데, 스냅샷을 만들어주는 작업을 commit이라고 한다.

Git vs Github?

Git은 소스 코드 기록을 관리하고 추적할 수 있는 버전 관리 시스템
Github은 Git Repository를 웹에서 관리할 수 있는 웹 서비스

  • 즉 Git으로 버전을 관리하는 폴더에 대해서, Github을 통해 여러 사람들이 공유하고 접근할 수 있다.
  • Github에서 Code Review 등을 통해 협업 가능, 오픈소스 프로젝트 호스팅.

Git Repository

Git 을 통해 버전을 관리하고자 하는 폴더 (repository - 저장소라는 뜻)

Remote vs Local repository

  • Remote repository - 온라인 서버에 있는 repository. 여러사람이 열람, 공유 가능
  • Local repository - 개인 컴퓨터 안에 있는 repository. 타인의 Remote repo 의 코드를 내 local repo 로 가져올 수 있음.

만약 React repository에 기여(contribute)하고 싶다면?

  1. 먼저 React repo 를 내 repo 로 복사한다. (fork한다)
  2. 나의 remote repo 에서 local repo 로 복사한다. (clone한다)
  3. local repo 에서 코드수정을 다 했다고 치고, local repo 에 기록된 commit(snapshot)을 내 remote repo로 업로드한다. (push한다).
  4. 내 작업이 반영되도록 요청한다.(pull request한다)
    • remote repo 에서 생긴 변경 사항을 local repo 에 반영하고 싶을 때도 pull 할 수 있다.

Git Workflow

some remote repo  <->  my remote repo <->
<->  local repo  <-  staging area  <-  workspace
** stage - "무대에 올리다"

A. 작업을 다른 remote repo 에서 가져올 때

  1. fork, git clone 주소

B. 작업을 내 컴퓨터에서 시작할 때

  1. 폴더를 만들고 git init 하여 git 이 관리하는 local repo로 변환.
  2. local repo를 원격으로 관리하기 위해 github에서 remote repo를 만들고 git remote add origin 링크 하여 local을 remote와 연결

협업할 때

  • 내 local repo와 상대의 remote repo를 연결하기 위해 git remote add mypair(원하는 이름) 링크
  • 상대의 remote repo에서 코드를 내 local repo로 가져올 때 git pull mypair master (받아오는 내용은 자동으로 merge 된다.)
  • git remote -v 로 연결된 local repo 와 remote repo 확인.
  • 동일한 라인을 두명 모두가 수정했을 때는 merge conflict가 발생, automatic merge 에 실패한다. (코드를 직접 확인해야함)

  1. 작업.
  2. add 파일이름 를 통해 staging area 에 올려 git 이 변경사항을 track 하도록 만든다.
    • 만약 clone된 초기 상태로 되돌리고 싶다면 restore 파일이름를 통해 변경사항을 폐기한다.
    • 만약 add 후에 코드를 수정했다면 새로 add 해야 한다.
  3. commit
    • local repo 에 완료한 commit 을 취소하고 싶을 때 reset
    • reset HEAD^ 혹은 reset HEAD~1 으로 가장 최근의 commit 취소.
    • HEAD~2 = HEAD^^
    • HEAD^3 의 뜻은 다수의 branch 로부터 merge된 commit 일 경우 3개의 부모 commit 중 3번째 부모를 뜻한다.
  4. push
    • git push origin master (push 뒤에 오는 명령어는 상황에 따라 유동적)
    • git log: push된 commit 을 확인하고 싶을때
  5. pull request (if necessary)

Reset options : --hard vs --soft (vs mixed)

  • --soft: uncommit changes, change are left staged.
  • --mixed : uncommit + unstage changes, changes are left in working tree (default).
  • --hard: uncommit + unstage + delete changes, nothing left.

Advanced


기타

  • 회사에서는 Smartgit, Sourcetree 같은 git GUI 를 많이 씀.
  • pull vs fetch
    • pull : 다운로드 + 병합 (주로 많이 씀)
    • fetch : 다운로드만 (remote 와 local 의 변경사항 비교할 때)

느낀점

  • git 도 linux 와 마찬가지로 실제로 써봐야 익숙해질 것 같다.
  • git 에 대해 막연하게 알고 있었는데 이번 기회에 확실하게 공부하게 되서 좋았다.
profile
게임과 프론트엔드에 관심이 많습니다.

0개의 댓글