GitHub

최정민·2023년 8월 7일
0

git

목록 보기
1/4

개요

버전관리는 협업 작업추적 복구등의 기능을 말하며 코드를 누가 언제 어떻게 변경했는지에 대해서 추적 및 관리하는 도구이며 변경 사항을 저장 및 되돌리기를 진행 할 수 있다.

목표

버전관리를 이해 및 응용

버전관리의 역사

Local Version Control System

  • 내 컴퓨터에서 버전 관리 기능 -> 내 컴퓨터 하드가 날아가면 전체 코드가 사라짐
  • 버전관리는 되지만 협업은 어려움이 있다.

Centralized Version Control System

  • 협업이 가능 해짐
  • commit 하는 순간 배포되어 다수에게 버그 유발 가능(서버로 바로 commit)
  • 인터넷이 안되면 작업이 불가능
  • 자신만의 version History를 가질 수 없음

Distributed Version Control System

  • commit을 하더라도 개인 저장소 내에 적용됨(다른 개발자에게 영향이 없음)
  • 원하는 순간에 배포(Push) 가능
  • 오프라인에서도 작업 가능
  • 자신만의 Version History를 가짐

CVS, SVN, Git

CVS

1980 년대에 사용
commit 오류 발생 시 Rollback 불가능 SVN으로 대체

SVN

2000년 대에 사용되었으며 현재도 사용하는 기업이 있다.
Rollback 가능

Git

현재 많은 기업들이 사용하고 있음
SVN 보다 빠른 속도와 많은 기능을 지원

Git 설치 및 설정

Window에서 설치

홈페이지 : https://git-scm.com/

최신버전으로 설치 파일 실행 전부다 next로 진행

Git Global Configuration

  • 최초 설치 시 기본설정을 한다고 생각하면 된다.

사용자 이름 설정

git config --global user.name "Your Name"

commit을 할때 작성자 이름

사용자 이메일 설정

git config --global user.email "your.email@example.com"

커밋에 연락처 정보로 기록

편집기 설정

git config --global core.editor "editor_name"

Git에서 커밋 메시지를 작성할 때 사용

줄 바꿈 설정

git config --global core.autocrlf true

Windows에서 개발을 하고 Linux나 macOS와 같은 Unix 기반 시스템과 협업할 때 줄 바꿈 방식을 자동으로 변환해주는 옵션입니다.

Git에서 사용되는 기본용어 목록

pository

  • 소스코드가 저장되어 있는 여러 개의 Branch가 모여있는 디스크상의 물리적 공간
  • Local Repository와 Remote Repository로 구분

Checkout

  • 특정 시점이나 Branch의 소스코드로 이동하는 것을 의미
  • Checkout 대상 -branch, Commit, Tag
  • Checkout을 통해 과거 여러 시점의 코드로 이동이 가능

Stage

  • 작업할 내용이 올라가는 임시저장영역
  • 이 영역을 이용하여 작업한 내용중 commit에 반영할 파일만 선별하여 commit을 수행할 수 있음

Commit

  • 작업할 내용을 Local Repository에 저장하는 과정
  • 각각의 commit은 의미이는 변경단위이고 변경에 대한 설명은 commit log로 남김
  • 권장 -commit을 자주 해야해야 한다. 게임 및 엑셀작업할 때 save point
  • 참고 -copmmit 단위 나 commit log format을 정해놓은 회사나 팀도 있음

tag

  • commit 위치에 쉽게 찾아갈 수 있도록 붙여놓은 이정표
  • Tag가 붙은 commit은 commit id대신 tag name으로 쉽게 checkout 가능

push

  • local repositroy의 내용중, Reomote Repository에 반용되지 않은 commit을 Remote Repository로 보내지는 과정

  • 권장 Push하는 순간 다른 개발자들도 영향을 받음 검증되지 않은 코드는 Push하지 않도록 함

pull

  • Remote Repository에 이 내용 중 Local Repository에 반영되지 않은 내용을 가져와서 Local Repository에 저장하는 과정
  • 다른 팀원이 변경하고 Push한 내용을 Local Repository에 가져올 수 있음
  • 참고 -Push 과정에서 conflict이 일어나서 Push가 거정된 경우 Pull을 통해 Remote Repository의 변경 내용을 Local Reposiory에 반영하여 conflict를 해결 한 뒤 다시 Push를 시도해야함

Branch

  • 특정 시점 에서 분기하여 새로운 commit을 쌓을 수 있는 가지를 만드는 것
  • 개발의 주축이 되는 branch를 master(main) branch라고 한다.
  • 모든 branch는 최종적으로 다시 master branch에 merge(병합) 되는 형식으로 진행 됨

Merge

  • Branch의 반대개념으로 하나의 Branch를 다른 Branch와 합치는 과정
  • Merge 되는 두 Branch는 주종관계가 성립
  • Merge 되는 과정에서 conflict가 발생하는 경우 Diff를 수정하여 conflict를 해결한 뒤 Merge를 진행 할 수 있음
profile
데이터분석공부중

0개의 댓글