반응형
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 브랜치
기본 워크플로우
- 원격 저장소에서 Clone하여 로컬에 저장소를 저장
- Working Directory에서 수정
- Staging Area에 파일을 Stage해서 커밋할 스냅샷을 생성 ( 선택적 사항 )
- Staging Area에 있는 파일들을 Commit해서 Git directory에 영구적인 스냅샷으로 저장
- Update 과정에서 confilct가 일어나면 해결( 수정후, resolve 하면 됨)
- 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
출처
반응형