[TIL] git

numver_se·2021년 7월 21일
0
post-thumbnail

💡 깃(git)이란?

컴퓨터 파일의 변경사항을 추적하고 여러 명의 사용자들 간에 해당 파일들의 작업을 조율하기 위한 분산 버전 관리 시스템

왜 필요할까?

Git은 버전 관리 시스템(VCS) 이다. 그렇다면 버전 관리 시스템을 왜 써야할까?


과제를 하다보면 완성, 진짜 완성, 진짜진짜 완성, 최종 등으로 다양한 파일들이 만들어진다. 이런 식으로 파일들이 늘어나다 보면 어떤 내용이 수정되었는지 확인하기 어렵고, 변경되기 전 자신이 원하는 부분을 되돌리기도 힘들다.

이런 문제를 해결하는 것이 바로 버전 관리 시스템(VCS)이다.

버전 관리 시스템이란, 시간에 따라 파일의 변화를 기록하여 필요한 순간에 특정 시점의 버전을 다시 꺼내올 수 있도록 하는 시스템을 말한다.

이를 통해 우리는 최종본을 만들기까지 어떤 과정을 거쳤는지 지난 과정들을 확인할 수 있고, 과정 도중 오류가 생기면 이전 버전으로 돌아갈 수 있다.

또한, git은 여러 개발자들이 협업할 수 있도록 돕는 기능을 가지고 있다. 개발할 때는 보통 프로그램을 기능별로 나누고 각 기능마다 여러 개발자들이 나누어 개발을 진행하는데, git을 이용하면 이렇게 나누어 작성된 코드를 하나로 모을 수 있다.

👉 git 구조

  1. working directory : 작업을 하는 프로젝트 디렉토리

  2. staging area : git add를 한 파일들이 존재하는 곳으로, 커밋을 하게 되면 staging area에 있는 파일들만 커밋에 반영

    staging area가 필요한 이유는 무엇일까?

    만약 staging area 가 없다면 원하는 것들만 선별적으로 커밋에 반영할 수 없음.

    다음 커밋에 반영하고 싶지 않은 파일이 있을 수 있으므로, 세밀한 버전 관리를 하기 위해 필요함.

  3. repository : working directory의 변경 이력들이 저장되어 있는 곳

다시 정리하자면,

  • 처음 코드 작성 시에는 파일이 working directory에 위치함.
  • git add 실행 시 staging area로 이동함
  • git commit -m "커밋메시지" 실행 시 로컬 레포지토리로 커밋
  • git reset 실행 시 저장된 기록으로 수정

👉 git-practice

VSCode 단축키
터미널 보기 및 켜기 : Ctrl+`

📌 Git 기본 커맨드

  1. git init : 현재 디렉토리를 Git이 관리하는 프로젝트 디렉토리(working directory)로 설정하고 그 안에 레포지토리(.git 디렉토리)를 생성하는 커맨드

  2. git config --global user.name "사용자이름" : 현재 사용자 이름을 설정하는 커맨드

  3. git config --global user.email "사용자이름" : 현재 사용자의 이메일 주소를 설정하는 커맨드

  4. git add [파일 이름] : 수정 사항이 있는 특정 파일을 staging area에 올리는 커맨드.

    git add ~

    git add 디렉토리명 : add 뒤에 디렉토리명이 들어가면 해당 디렉토리 내에서 수정 사항이 있는 모든 파일들을 staging area에 올림
    git add . : working directory 내의 수정 사항이 있는 모든 파일들을 staging area에 올림

  5. git reset [파일 이름] : staging area에 올렸던 파일을 다시 내리는 커맨드

  6. git status : Git이 현재 인식하고 있는 프로젝트 관련 내용들을 출력하는 커맨드

  7. git commit -m "커밋 메시지" : 현재 staging area에 올라와 있는 것들을 커밋으로 남기는 커맨드

👉 Branch

독립적으로 어떤 작업을 진행하기 위한 개념

📌 왜 Branch를 써야할까?

  • master : 레포지토리를 만들고 커밋을 하면 자동으로 생기는 브랜치

프로젝트를 진행하다 보면 딱 하나의 코드 관리 흐름으로만 순조롭게 진행할 수 있는 경우는 드물다. 대개는 여러 버전(새로운 기능 추가한 A 버전, 버그 수정한 B 버전…)으로 개발이 진행된다.

이 경우, 두 개의 서로 다른 프로젝트를 진행하기 보다는 하나의 프로젝트 내에서 브랜치 두 개를 만드는 것이 효율적이다. 즉, 하나의 프로젝트에 두 개의 버전을 만드는 것이다.

필요에 의해 만들어지는 각각의 브랜치는 다른 브랜치의 영향을 받지 않기 때문에, 여러 작업을 동시에 진행할 수 있다.

📌 Branch 관련 커맨드

  1. git branch [새 브랜치 이름] : 새로운 브랜치를 생성하는 커맨드

  2. git branch -d [기존 브랜치 이름] : 브랜치를 삭제하는 커맨드

  3. git checkout -b [새 브랜치 이름] : 새로운 브랜치를 생성하고 그 브랜치로 바로 이동하는 커맨드

    새 브랜치 이름 대신 기존 브랜치 이름이 들어가면 해당 브랜치로 이동

  4. git merge [기존 브랜치 이름] : 현재 브랜치에 다른 브랜치를 merge(병합)하는 커맨드

    --abort 옵션을 붙이면 merge를 하다가 CONFLICT가 발생했을 때, 일단 merge 작업을 취소하고 이전 상태로 돌아감


👉 github 협업

  1. github에서 repository 생성
  2. 빨간 박스 안의 코드 입력 후 github 계정 연계

  3. 로컬로부터 push한 파일이 github에 올라와 있으며, 해당 커밋에서 어떤 변화들이 있었는지도 확인 가능

📌 github 관련 커맨드

  1. git push -u(or --set-upstream) origin master : 로컬 레포지토리의 내용을 처음으로 리모트 레포지토리에 올릴 때 사용하는 커맨드

  2. git push : 로컬 레포지토리의 내용을 리모트 레포지토리에 올리는 커맨드

  3. git pull : 리모트 레포지토리의 내용을 로컬 레포지토리로 가져오는 커맨드

  4. git clone : [프로젝트 GitHub 상 주소]는 GitHub에 있는 프로젝트를 내 컴퓨터로 가져오는 커맨드


reference

  1. https://velog.io/@tataki26/Git-%EC%B4%9D-%EC%A0%95%EB%A6%AC
  2. https://backlog.com/git-tutorial/kr/stepup/stepup1_5.html
  3. https://git-scm.com/book/ko/v2/Git-%EB%B8%8C%EB%9E%9C%EC%B9%98-%EB%B8%8C%EB%9E%9C%EC%B9%98%EB%9E%80-%EB%AC%B4%EC%97%87%EC%9D%B8%EA%B0%80
  4. https://m.blog.naver.com/khu94/221936184230

0개의 댓글