1. Why Git ? 깃을 사용하는 이유!
Git은 소스코드의 형상관리를 위한 오픈소스 무료 도구입니다.
형상을 관리한다는 것은 곧 변경점을 관리하는 것을 의미합니다.
서비스 정의서, 요구사항 명세서, 소스코드 등이 모두 형상관리의 대상이 되는데,
Git은 그 중에서도 소스코드 관리를 위한 도구입니다.
Git은 중앙집중형이 아니라 분산식으로 버전을 관리합니다.
중앙집중형 방식은 네트워크가 안 닿으면 개발을 할 수 없고, 원격서버에 문제가 생기면 소스코드를 복원하는 데에 문제가 생길 수 있습니다.
분산식으로 관리하면 로컬 저장소에서 개발을 하고 테스트를 할 수 있어서 네트워크가 안 닿는 환경에서도 개발을 한 이후에 인터넷이 될 때 소스코드를 원격서버로 올릴 수 있다는 장점이 있습니다.
또한, 원격서버 내의 소스에 문제가 생겨도 로컬 저장소 안의 소스코드로 원복을 할 수 있다는 장점도 있습니다.
2. Git Flow 깃 플로우 관련 기본 용어 알아보기
깃은 두 개의 저장소를 가지고 있는데, 원격 저장소 Remote Repository와 로컬 저장소 Local Repository 가 있습니다. 로컬 저장소는 보통 개인 PC 입니다.
로컬 저장소는 세 개로 구분이 됩니다. 작업 디렉토리, 스테이징 영역, 그리고 로컬 저장소 입니다. 물리적인 영역 구분은 아니고 논리적인 영역 구분 입니다.
작업 디렉토리는 현재 PC에서 작업중에 있는 디렉토리 입니다. 깃에서 관리는 하지만 실제로 추적은 하지 않는 영역입니다.
워킹 디렉토리에서 스테이징 영역으로 저장하는 것은 git add라고 합니다.
스테이징 영역은 워킹 디렉토리에서 작업한 내용이 올라가는 임시 저장영역으로, 커밋을 준비하는 곳입니다.
Commit 이란, 깃에서 의미있는 변경의 단위입니다.
스테이징 영역은 깃에 의해 변경점 추적이 관리되는 영역입니다.
스테이징 영역의 소스를 커밋하여 로컬 저장소에 저장을 합니다.
staging area에서 local repository에 올리는 것은 git commit이라고 합니다.
로컬 저장소에서 원격 저장소로 코드를 올리는 것은 코드를 푸시한다; push한다; git push라고 합니다.
푸시를 하기 전에는 원격 저장소의 코드를 나의 로컬 저장소로 한번 땡겨와서; pull 해와서; 풀해온 이후에 push를 해야 합니다.
여기까지가 로컬에서 서버로 소스를 올리는 내용입니다.
원격서버/원격저장소에 있는 소스를 로컬로 가져오고 과정과 관련된 용어에는 클론과 풀이 있습니다.
Clone 클론: 원격저장소에 있는 소스코드를 로컬 저장소로 클론을 통해서 복사해오는 과정을 말합니다.
원격저장소에 있는 다른 개발자들의 커밋을 가져오는 것은 커밋을 땡겨온다 또는 pull한다고 말합니다.
3. 깃헙 Git Hub ? 깃랩 Git Lab ?
원격저장소를 개인이 직접 설치 및 사용/관리 하기는 사실 쉽지 않은데, 이것을 Git Hub 에서 대신해주는 서비스입니다.
깃헙은 오픈소스 프로젝트용은 무료이고, private 저장소로 사용할 경우는 유료입니다.
깃헙이 생기면서 오픈소스 생태계의 성장에 공헌하였다고 합니다. 텐서플로우도 깃헙에 있습니다. 텐서플로우의 전체 코드를 다운로드 받을 수도 있고, 내용을 확인할 수도 있다고 합니다.
깃헙 자체도 오픈소스프로젝트이고 깃헙에 깃헙소스가 올라와있습니다.
깃랩도 깃헙과 유사한데, 좀더 상용화된 소프트웨어여서 기업에서 주로 인트라넷으로 연결해서 많이 사용한다고 합니다.
4. 깃 Git 기초 명령어 예시
$ git status
// 상태 확인 : modified 등 상태 확인이 가능합니다.
$ git log
// 커밋 히스토리 확인
// 커밋 히스토리는 해시값으로 관리됩니다. * 관련 사이트 : http://www.sha1-online.com/
$ git diff
// 작업 디렉토리에서 기존 코드 대비 변경점 확인
$ git add test.java
// 스테이징 영역에 추가
$ git commit -m "Commit for test_20211214"
// 커밋 생성
// -m : 인라인으로
$ git log --help
// --help 를 쓰면 매뉴얼 페이지가 브라우저로 뜹니다. 옵션들이 어떻게 사용되는지 설명이 있는 페이지 입니다.
$ git log -u 'commit id hash value'
// 해당 커밋의 diff 내용까지 확인
$ git log -2
// 가장 최근 2개의 커밋 내용 확인
$ git log --oneline
// 커밋 1개당 1줄로 간결하게 출력.
$ git commit --amend
// 마지막 반영한 최신 커밋 메시지를 변경.
// 변경 이후에는 변경 전 메시지로 되돌릴 수 없음.
$ git remote -v
// 저장소별칭과, 주소를 리턴해줍니다.
$ git push [저장소별칭] [현재브랜치]
//저장소별칭은 타겟입니다
// 현재브랜치는 내pc입니다
$ git clone [원격저장소주소]
// 깃헙에서 찾을 수 있는 주소입니다.
'IT,SW,Data,Cloud,코딩' 카테고리의 다른 글
베이즈 정리, 나이브 베이즈 (0) | 2022.02.15 |
---|---|
SVM 알고리즘과 분류기, SVR 알고리즘 (0) | 2022.02.10 |
군집분석 Clustering (0) | 2022.02.08 |
KNN(K-Nearest Neighbor) (0) | 2022.02.03 |
회귀분석 Regression Analysis (0) | 2022.01.27 |
의사결정트리: 엔트로피, 정보이득, 지니계수, 카이제곱스퀘어 (0) | 2022.01.25 |
도커, 컨테이너, 쿠버네티스, 마이크로서비스, 데브옵스 (0) | 2022.01.20 |
클라우드 서비스의 개념과 종류, 그리고 클라우드 아키텍쳐의 구조 (0) | 2022.01.13 |
댓글