Tom's Note
article thumbnail
반응형

Git의 대해서

  • 1991~2002 : Patch와 단순 압축 파일로만 관리
  • 2002 : BitKeeper(상용 DVCS)를 사용
  • 2005 : BitKeeper를 만드는 회사는 이익을 추구하여 리눅스 개발 커뮤니티는 자체 도구 Git을 개발하여 아래와 같은 목표를 가짐
    • 빠른속도
    • 단순한 구조
    • 비선형적인 개발( 수천 개의 동시 다발적인 브랜치 )
    • 완벽한 분산
    • 리눅스 커널 같은 태형 프로젝트에도 유용할 것 ( 속도나 데이터 크기면에서 )

 

Git의 핵심 및 기능

 

거의 모든 명령을 로컬에서 실행

  • 로컬 파일과 데이터만 사용하기 때문에 네트워크 영향을 받지 않음
  • 오프라인이거나 VPN에 연결하지 못해도 작업이 가능 ( Commit이 가능 )
    • CVCS는 서버의 데이터베이스에 접근할 수 없어서 파일을 편집할 수는 있지만 Commit 불가능
    • DVCS는 네트워크 없이 Commit이 가능
  • Commit이 되고 안되고는 사소한 문제지만 실제로 작업을 하게되면 이력 관련해서 생각해보면 답이 나올것이다.

 

Git의 무결성

  • Git은 데이터를 저장하기 전에 항상 체크섬을 구하고 그 체크섬으로 데이터를 관리
  • 체크섬은 Git의 기본적인 데이터 단위이자 Git의 기본 철학
  • SHA-1 해시를 사용하여 체크섬을 생성 ( 40자 길이의 16진수 문자열 )

 

Git의 세가지 상태

Git은 파일을 Committed, Modified, Staged 세 가지 상태로 관리

  • Committed : 데이터가 로컬 데이터베이스에 안전하게 저장
  • Modified : 수정한 파일을 로컬 데이터베이스에 커밋하지 않음
  • Staged : 수정한 파일을 곧 커밋할 것이라고 표시한 상태

  • Working Directory :
    • 프로젝트의 특정 버전을 Checkout 한 것
    • 추가된 파일은 Modified 상태
  • Staging Area :
    • .git directory에 있으며 Commit할 파일들을 저장
    • 파일을 add하면 Staged 상태
  • Git derectory :
    • 프로젝트의 메타데이터와 객체 데이터베이스를 저장 ( Git 디렉토리가 Git의 핵심 )
    • 다른 컴퓨터에 있는 저장소를 Clone 할 때 Git 디렉토리가 생성
    • Git directory에 있는 파일들은 Commit된 상태

 

Git 브랜치

기본 워크플로우

  1. 원격 저장소에서 Clone하여 로컬에 저장소를 저장
  2. Working Directory에서 수정
  3. Staging Area에 파일을 Stage해서 커밋할 스냅샷을 생성 ( 선택적 사항 )
  4. Staging Area에 있는 파일들을 Commit해서 Git directory에 영구적인 스냅샷으로 저장
  5. Update 과정에서 confilct가 일어나면 해결( 수정후, resolve 하면 됨)
  6. Commit을 해서 저장소에 파일을 등록

 

브랜치 워크플로우

Git은 기본적으로 3-way Merge를 사용

  • master 
    • 검증되어 배포된 상용 소스를 버전별로 관리하는 브랜치
    • 즉, 버전 단위로 변경점이 관리되는 안정화된 브랜치
    • 배포했거나 배포할 코드를 master 브랜치에 Merge해서 안정버전의 코드만 master 브랜치에 둔다.
  • develop or next
    • 실제 개발을 하는 브랜치
    •  
  • topic or hotfix
    • 짧은 호흡의 브랜치

 

Git 명령어 정리

  • git [명령어] [옵션]
  • .git : 버전관리 관련 디렉토리
  • 예시
    • 서버 IP or Domain : svn-domain
    • git서버 저장소 경로 : svn/example/trunk
    • git 로컬 저장소에 업로드할 디렉토리 : /home/exam

config : .git이 설치된 공간의 설정값들을 변경하는 명령어

# 전역 사용자/이메일 
$ git config --global user.name "user-name"
$ git config --global user.email "uesr-email@xxxxx.xx"

# 지역 사용자/이메일 : 명령어를 실행하는 디렉터리부터 하위까지 적용
$ git config user.name "user-name"
$ git config user.email "uesr-email@xxxxx.xx"

# 전역 설정 정보 조회
$ git config --global --list

# 지역 설정 정보 조회
$ git config --list 

# git 출력 결과 색상 활성화
$ git config --global color.ui "auto"

init : 저장소 초기화 ( 새로운 저장소 생성 )

# 저장소 생성 : .git 디렉터리가 생성됨
$ git init

clone : 저장소 복제 

git clone [저장소 url]

remote : 원격 저장소 추가하기

# 여러 원격 저장소를 추가 가능
$ git remote add [원격 저장소 별칭] [ 원격 저장소 URL]

add : 파일을 staging 하는 명령어

git add [파일...]

commit : staged 파일들을 로컬 저장소에 저장

git commit -m "메시지 입력 부분"

log : 이력 확인

# 모든 이력
$ git log

# 변경 사항을 보여주는 패치와 함께 이력 표시
$ git log -p

# 갯수 만큼 표기
$ git log -n

Git 관련 소프트웨어

  • GitHub
  • Visual Studio
  • Eclipse
  • Bash, Zsh, Powershell

출처

Git Book

git-flow cheatsheet

git 명령어

 

 

 

 

반응형
profile

Tom's Note

@크크크크

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!