Git tutorial

eunbi kim·2024년 4월 9일
0
  • Git Global Configuration
  • Git 기본 용어

Git Global Configuration

  • Global Username & Email
git config --global user.name <username>
git config --global user.email <email>
  • CRLF - Windows
    core.autocrlf: 서버에서 가져올 때는 LF를 CRLF로 변경하여 오픈하고, 서버에 보낼 때는 CRLF를 LF로 변경하는 설정!!
    +) CRLF: 줄바꿈 문자가 windows에서는 CR(\r)과 LF(\n)로 이루어져 있다.
    Windows 사용자와 Mac 사용자가 같은 Git repository를 작업할 때 코드에서 변경된 내용이 없어도 CRLF 차이로 인해 commit이 발생할 수 있다.
git config --global core.autocrlf true
  • Editor
git config --global core.editor <editor>
  • 전체 설정 확인
git config --list

Git 기본 용어

  • Repository
    • 소스코드가 저장되어 있는 여러 개의 Branch가 모여 있는 디스크상의 물리적 공간
    • Local repository / Remote repository로 구분
  • Checkout
    • 특정 시점이나 Branch의 소스코드로 이동하는 것을 의미
    • Checkout 대상 - Branch, Commit, Tag
    • Checkout을 통해 과거 여러 시점의 코드로 이동이 가능
  • Stage
    • 작업할 내용이 올라가는 임시 저장 영역
    • 이 영역을 이용하여 작업한 내용 중 commit에 반영할 파일만 선별하여 commit을 수행할 수 있음
  • Commit
    • 작업할 내용을 local repository에 저장하는 과정
    • 각각의 commit은 의미있는 변경단위이고, 변경에 대한 설명을 commit log로 남김
    • 권장 - commit을 아끼지 말자 (게임 세이브 아끼면 똥됩니다)
    • 참고 - commit 단위나 commit log format을 정해놓은 회사나 팀도 있음 (빌드 서버를 사용하는 경우)
  • Tag
    • 임의의 commit 위치에 쉽게 찾아갈 수 있도록 붙여놓은 이정표
    • Tag가 붙은 commit은 commit id(version) 대신 tag name으로 쉽게 checkout 가능
  • Push
    • local repository의 내용 중, remote repository에 반영되지 않은 commit을 remote repository로 보내는 과정
    • 권장 - push하는 순간 다른 개발자들도 영향을 받음. 검증되지 않은 코드는 push하지 않도록 함.
  • Pull
    • remote repository의 내용 중, local에 반영되지 않은 내용을 가져와서 local에 저장하는 과정
    • 다른 팀원이 변경하고 push한 내용을 local에 가져올 수 있음
    • 참고 - push 과정에서 conflict(충돌)이 일어나서 push가 거절된 경우, pull을 통해 remote의 변경 내용을 local에 반영하여 conflict를 해결한 뒤 다시 push 를 시도해야 함.
  • Branch
    • 특정 시점 (commit 단위)에서 분기하여 새로운 commit을 쌓을 수 있는 가지를 만드는 것
    • 개발의 주축이 되는 branch를 master branch(혹은 main branch)라고 함
    • 모든 branch는 최종적으로 다시 master branch에 merge(병합)되는 형식으로 진행됨
  • Merge
    • branch의 반대개념으로 하나의 branch를 다른 branch와 합치는 과정
    • merge되는 두 branch는 주종관계가 성립. e.g. dev branch를 main branch에 merge
    • merge되는 과정에서 conflict 발생 경우 diff를 수정하여 conflict를 해결한 뒤 merge를 진행할 수 있음

0개의 댓글