Git이란 무엇인가?
Git
분산 버전 제어 시스템(DVCS) 이다. 저장소를 중앙 서버에 저장하는 기존의 버전 제어 시스템과 달리,
Git을 사용하면 개발자는 코드를 분산된 저장소에 저장하고, 다른 개발자와 함께 코드를 협업해 개발할 수 있다. Git은 다음과 같은 특징을 가지고 있다.
분산 저장소
각 개발자는 로컬에 전체 프로젝트의 복사본을 가지고 작업한다. 이를 통해 네트워크 연결이 없어도 작업이 가능하고, 중앙 서버에 문제가 생겨도 데이터 손실 위험이 낮다.
효율적 성능
브랜치 생성, 병합, 체크아웃등의 작업을 빠르게 수행할 수 있다.
데이터 무결성
Git은 데이터를 SHA-1 해시를 사용해 관리하는데, 이는 데이터 무결성을 보장하며, 파일 상태와 프로젝트 이력을 정확히 추적할 수 있다.
트리 구조
git은 트리구조를 사용해 코드를 관리한다. 이를 통해 코드의 변경사항을 추적할 수 있고, 원하는 버전의 코드로 되돌릴 수 있다.
브랜치와의 병합
Git은 브랜치를 쉽게만들고 다룰 수 있다. 이를 통해 여러 개발자가 동일한 소스코드에 대해, 코드를 여러가지 버전으로 분기해 작업을 독립적으로 진행할 수 있으며 나중에 이를 통합 가능하다.
오픈소스
GPL하에 배포하는 무료 오픈소스 소프트웨어이다.
커뮤니티및 도구의 지원 Git은 널리 사용되는 시스템으로 다양한 커뮤니티의 지원과 많은 도구(gitlab, github)가 있어 협업과 통합이 용이하다.
git의 기본 명령어
git init 명령어를 실행하면 현재 디렉토리에 .git 디렉토리가 생성된다. 이 .git 디렉토리가 버전 관리 시스템이 되며, .git 디렉토리에는 git의 모든 관리정보가 포함된다.
git add 명령어를 사용하면, git이 해당 파일이나 디렉토리를 추적하게 된다. 추적 대상으로 설정되면 스테이징 영역에 추가되며, git은 해당커밋할때 해당 대상에 대한 변경 사항을 포함한다.
git commit 스테이징 영역에 추가된 변경사항을, 로컬 저장소에 저장한다. git add 명령으로 추적 대상으로 설정된 파일의 변경 사항이 커밋되며, 커밋시 해당 변경 사항이 버전 관리 시스템에 기록된다. 이전 버전의 코드로 되돌릴 수 있다.
git status 현재 저장소의 상태를 확인한다. 변경된 파일, 스테이징 영역에 추가된 파일을 확인할 수 있다.
git branch 브랜치를 생성, 삭제, 목록조회등 브랜치 관련 작업을 수행한다.
git checkout 다른 브랜치로 전환하거나 태그를 통해 특정 버전의 파일을 체크아웃한다.
git merge 다른 브랜치의 변경사항을 현재 브랜치로 병합한다.
git log 커밋 이력을 확인한다.
.git 디렉토리.
git 저장소의 핵심으로, 저장소의 모든 정보와 기록 구성이 이곳에 저장된다.
git 디렉토리에는 다음과 같은 파일과 폴더가 포함된다.
index 파일.
git에서 매우 중요한 역할을 하며, 스테이징 영역, 캐시라고도 불린다. 이 파일은 커밋할 준비가 된 변경사항들을 추적한다.
역할과 기능
변경사항 추적과 메타데이터
index 파일은 git add 명령을 통해 스테이징 영역에 추가된 파일의 정보를 바이너리 형태로 저장한다. 이 정보에는 파일의 경로, 수정시간, 파일크기, 파일 권한 등이 포함된다.
효율적 파일 관리
index파일은 파일의 실제 내용이 아니라 메타데이터와 파일의 상태정보만 저장한다.
이를 통해 파일 시스템의 변화를 빠르게 감지하고, 필요한 파일 정보에 빠르게 접근할 수 있다.
파일의 메타데이터
index파일은 각 파일의 상태를 나타내는 정보를 포함한다. 파일명, 수정시간, 크기, 권한등 파일의 메타데이터가 저장된다.
SHA-1해시
각 커밋에 대한 식별자 역할을 하며, 커밋된 내용과 커밋 메시지, 타임스탬프, 저자정보들을 종합하여 해시를 생성한다.
이를통해 파일의 무결성을 보장하고, 파일이 변경되었는지 여부를 확인할 수 있다.
스테이지 상태
스테이지 상태는 파일이 현재 스테이징 영역에서 어떤 상태인지를 나타낸다. 주로 다음과 같은 상태가 있다.
Added(새로운 파일이 스테이징 영역에 추가 되었음)
Modified(파일이 수정되었으며, 해당 변경사항이 스테이징 영역에 추가 되었음)
Deleted(파일이 삭제되었으며, 이 변경사항이 스테이징 영역에 추가 되었음)
Untracked(파일이 Git에 의해 추적되지 않고 있음. 스테이징 영역에 추가되지 않았다고 볼 수 있다.)
Staged(스테이징 영역에 있으며 다음 커밋에 포함될 준비가 되었음)
스테이징 영역
주로 index 파일에 스테이지 정보가 기록되며, 저장되는 스테이지 상태 정보를 통해 구현된다.
objects 폴더
저장소의 모든 데이터 객체를 저장하는 곳이다.
이 폴더는 Git의 핵심 데이터 구조를 담고 있으며, 주로 다음 세가지 주요 유형의 객체를 포함한다.
커밋 객체
커밋 객체는 프로젝트의 특정 시점에 대한 스냅샷을 나타낸다.
커밋 객체는 다음과 같은 정보를 포함한다.
커밋 메시지
커밋과 관련된 설명이나 정보를 담은 메시지이다.
작성자 정보
커밋을 만든 사람의 이름과 이메일 주소이다.
커밋 시간
커밋이 이루어진 정확한 시간이다.
트리객체의 SHA-1해시
이 커밋에 해당하는 파일과 디렉토리 구조를 나타내는 트리 객체를 가리키는 참조이다.
부모 커밋의 해시
현재 커밋이 기반한 이전 커밋들의 해시이다. 첫쨰 커밋을 제외하고는 대부분 하나 이상의 부모 커밋이 있다.
트리 객체
트리 객체는 파일 시스템의 디렉토리를 나타내며 다음과 같은 정보를 포함한다.
파일 참조(블롭객체)
디렉토리 내의 각 파일에 대한 참조이다. 각 파일은 블롭 객체로 표현되며 파일의 실제 내용을 담고 있다.
하위 디렉토리 참조
디렉토리 내의 다른 하위 디렉토리들을 나타내는 트리 객체에 대한 참조이다.
파일 및 디렉토리의 메타 데이터
파일 또는 디렉토리의 이름, 권한, 그리고 해당 객체의 SHA-1 해시값을 포함한다.
블롭 객체
블롭 객체는 파일의 실제 데이터를 포함하며 다음과 같은 특징을 지닌다.
파일 내용의 저장
블롭객체는 파일의 실제 내용을 저장한다. 이 내용은 텍스트 파일이든, 바이너리 파일이든 관계없이 그대로 저장된다.
파일 메타데이터의 분리
파일의 이름, 위치, 권한등의 메타데이터는 트리 객체에만 저장되며, 블롭객체에는 오직 파일의 내용만을 저장한다.
변경 사항에 대한 새로운 객체 생성. 파일 내용이 변경될때마다 새로운 블롭 객체가 생성된다.
이는 git이 파일의 각 버전을 독립적으로 추적할 수 있게 해준다.
팩 파일.
팩파일은 주로 .git/objects 폴더 내에 생성된다. 이 폴더는 저장소의 모든 데이터 객체 (블롭, 트리, 커밋 객체) 를 저장하며, 팩 파일은 이들 객체를 압축한 형태로 저장한다. 이 과정에서 delta compression 이 사용되어 객체들 사이의 중복 데이터를 최소화 한다.
Diff Algorithm과 Delta Compression 의 적용
diff 알고리즘은 파일간의 차이점을 식별하는데 사용된다.
delta compression은 이러한 차이점을 저장하여, 변경되지 않은 데이터의 중복 저장을 방지한다.
팩파일의 생성 과정
가비지 컬렉션
git은 저장소의 유지 관리를 위해 주기적으로, 또는 git gc 명령 실행시 (garbage correcting) 불필요한 객체를 정리하고, 남은 객체를 팩파일로 재구성한다.
이 과정에서 delta compression을 통해 최적화 되어 저장소 크기를 줄이는데 도움을 준다.
이 명령은 일정 조건 하에서 Git에 의해 자동으로 실행될 수도 있고, 사용자가 수동으로 실행할 수도 있다.
팩 파일의 재구성
가비지 컬렉션 과정에서는 팩 파일들을 재검토하고, 필요한 경우 새롭게 팩 파일을 생성해 저장소의 데이터를 더 효율적으로 압축한다.
저장소 크기 최적화
이 과정은 저장소의 크기를 최소화 하고, 데이터 접근 속도를 향상시키는 데 목적이 있다.
자동화된 프로세스
Git의 내부 매커니즘은 일반적으로 사용자의 개입 없이 자동으로 저장소를 관리한다. 대부분의 경우 사용자는 팩 파일 고나리에 신경 쓸 필요가 없다. 필요한 경우 사용자는 git gc 명령으로 수동으로 저장소를 최적화 할 수 있다.
Diff Algorithm
두개의 텍스트 파일 또는 텍스트 데이터 블록 사이의 차이점을 찾아 내는데 사용되는 알고리즘이다.
Git과 같은 버전 관리 시스템에서 매우 중요한 역할을 한다.
이 알고리즘은 변경된 부분을 식별해, 사용자에게 파일 간의 구체적 차이를 보여준다.
기본작동 원리
변경점 식별
두 버전의 파일이나 데이터 사이에서 추가, 삭제, 변경된 부분을 찾아낸다.
라인 바이 라인 비교
대부분의 diff 알고리즘은 라인 단위로 파일을 비교한다. 즉 한 줄씩 비교하여 어떤 줄이 추가되고 삭제되고 변경되었는지 확인한다.
최소 변경 집합
가장 효율적인 차이점을 찾아내 변경된 부분을 최소한의 차이로 표현한다.
Git에서의 Diff 알고리즘 사용
Git에서 diff 명령어를 사용하면, 두 커밋 또는 작업 디렉토리와 스테이징 영역 사이의 차이를 볼 수 있다.
코드리뷰과정이나 병합시 diff 결과는 어떤 변경사항이 있는지 파악하는데 도움을 준다.
패치 생성
diff의 결과를 사용해 패치 파일을 생성할 수 있으며, 이 패치 파일은 다른 곳에서 변경사항을 적용하는데 사용될 수 있다
트리 객체
트리 객체는 디렉토리, 또는 다른 트리 객체의 구조를 나타낸다.
각 객체는 파일(블롭 객체)또는 하위 디렉토리(다른 트리 객체에 대한 참조를 포함한다.
이러한 참조는 해당 파일또는 디렉토리의 이름, 권한, SHA-1해시를 포함 한다.
블롭 객체
블롭 객체는 파일의 실제 데이터를 포함한다.
파일의 내용이 변경될때마다 새로운 블롭 객체가 생성된다. 하지만 파일 이름, 위치, 권한등의 메타데이터는 트리 객체에 저장된다. index 파일이 delta compression, diff algorithm 을 이용해 변경 사항만 저장했던 것 과 다르게,
블롭객체는 각 파일의 모든 버전을 독립적으로 저장한다. 따라서 큰 파일이나, 자주 변경되는 파일은 저장소 크기를 빠르게 증가 시킬 수 있다.
Delta Compression
Git은 변경된 내용만을 저장하기 위해 Delta Compression을 사용한다. 이는 변경되지 않은 부분은 저장하지 않고, 변경된 부분만을 기록함으로써 저장 공간을 절약한다.
Git은 먼저 파일의 이전 버전과 현재 버전을 비교하여 변경된 부분을 식별하는데, 이과정에서 diff알고리즘이 사용된다.
이후 변경된 부분에 대한 정보를 delta라는 형태로 생성해, 압축하여 저장한다.
원본 파일: "Hello, world!"
변경된 파일: "Hello, Git world!"
저장된 Delta: "원본에서 'world'를 'Git world'로 변경"
git은 이미지나 비디오 같은 바이너리 파일도 저장할 수 있지만, delta compression이 불가능해 조금의 수정에도 .git디렉토리가 커질 수 있다. 이는 git의 효율성을 저해할 수 있다. 일부 프로젝트에서는 바이너리 파일 업로드를 제한 하기도 하며, 파일을 별도의 서버에 저장하고 git저장소에서는 파일의 포인터만 저장하는 방식으로 사용하기도 한다.
역할
커밋 데이터를 저장
commits 폴더는 각 커밋에 대한 데이터를 저장한다. 커밋 메시지, 작성자 정보, 커밋 날짜와 같은 메타데이터가 포함된다.
git은 tree 구조를 따르고 있는데, 각 커밋의 SHA-1 식별자에 대한 참조(이전 커밋, 부모커밋)를 포함한다.
Git은 커밋을 객체로 저장한다.
커밋은 파일의 변경 사항을 하나의 단위로 저장하는 것이다. 커밋은 다음과 같은 정보를 포함한다.
커밋 메시지, 해당 커밋의 sha-1 해시, 이전 커밋(부모 커밋)의 sha-1 해시
브랜치와 태그를 저장하는 refs 폴더.
브랜치
Git 저장소의 복제본이다. 브랜치를 사용하면 코드의 변경사항을 독립적으로 관리할 수 있다.
깃 저장소는 트리구조로 이루어져 있는데, 루트노드는 저장소 최상위 위치(main 이나 master)를 나타내고,
브랜치는 트리구조의 하위 노드를 나타낸다. 브랜치는 루트노드에서 분기된 새로운 경로를 나타낸다.
브랜치의 활용
브랜치를 활용해 기존 상위 노드의 코드를 손상시키지 않고 개발 할 수 있다.
이를 새로운 기능개발, 버그 수정, 배포용 버전 준비 등 다양한 용도에 활용할 수 있다.
이는 코드의 안정성, 협업 효율성, 배포 효율성에 도움을 준다.
브랜치의 생성
git branch <브랜치 이름>
브랜치의 전환
git checkout <브랜치 이름>
브랜치의 병합
git merge <병합할 브랜치 이름>
브랜치의 삭제
git branch -d <삭제할 브랜치 이름>
태그
특정 커밋을 가리키는 표시이다. 일반적으로 릴리스 버전을 나타내는데 사용된다.
태그는 크게 두가지 종류로 나눌 수 있다.
경량 태그
경량 태그는 커밋의 SHA-1 해시를 가리킨다. 경량 태그는 비교적 가볍지만 주석을 추가할 수 없다.
git tag <태그 이름> [<커밋 ID>]
커밋 id를 생략하면 현재 head 커밋이, 태그가 가리키는 커밋이 된다.
특정 태그를 조회하려면 다음과 같은 명령어를 사용한다
git show <태그 이름>
해당 커밋의 정보를 출력하게 된다.
git tag -d <태그 이름>
커밋 자체는 삭제 되지 않으나, 태그가 사라진다.
주석이 달린 태그는 커밋의 해시와 주석을 가리킨다. 주석이 달린 태그는 경량 태그보다 무겁지만 주석을 추가할 수 있다.
따라서 log 등으로 태그를 참조하면 해당 주석도 함꼐 참조하게 된다.
주석은 계속 바꿀 수 있다. 주석이 달린 태그를 삭제하면 주석도 함께 삭제된다.
git tag -a <태그이름> -m <주석>
git tag -s <태그이름>
주석을 편집할 수 있는 편집기가 열린다.
설정파일
또한 .git 디렉토리에는 git 설정을 저장하는 파일도 포함된다.
config 파일
기본 설정을 저장한다.
git config 라는 도구로 설정 내용을 확인하고 변경할 수 있다. git은 이 설정에 따라 동작한다. 이때 사용 하는 설정 파일은 새가지나 된다.
/etc/gitconfig 파일
시스템의 모든 사용자와 모든 저장소에 적용되는 설정이다.
git config --system 옵션으로 이 파일을 읽고 쓸 수 있다.(이 파일은 시스템 전체 설정 파일이기 때문에 수정하려면 시스템의 관리자 권한이 필요하다.)
~/.gitconfig, ~/.config/git/config 파일
특정 사용자에게만 적용되는 설정이다. 특정 사용자(현재 사용하는 로컬 컴퓨터 시스템의 사용자)의 모든 저장소 설정에 적용된다.
.git/config
이 파일은 Git 디렉토리에 있고 특정 저장소에만 적용된다. --local 옵션을 사용하면 이 파일을 사용하도록 지정할 수 있다. 이 옵션이 디폴트로 사용된다.
각 설정은 역순으로 우선순위를 갖는다.'
elfprxhflrk todtjdehlsek.
리모트 저장소의 개념과 관리
리모트 저장소는 인터넷이나 네트워크 어딘가에 있는 저장소를 말한다.
리모트 저장소는 일반적으로 GitHub, GitLab과 같은 웹 기반 Git 호스팅 서비스에 위치한다.
리모트 저장소는 다음과 같은 목적으로 사용된다.
협업
리모트 저장소를 사용해 다른 개발자와 코드를 공유하고 협업할 수 있다.
버전관리
리모트 저장소를 사용해 코드의 변경 사항을 추적하고 원하는 버전의 코드로 되돌릴 수 있다.
배포
리모트 저장소를 사용해 소프트웨어를 배포할 수 있다.
리모트 저장소의 종류
리모트 저장소는 다음과 같은 두가지 종류로 분류된다.
공개 저장소
누구나 접근할 수 있는 저장소이다.
비공개 저장소
특정 사용자만 접근할 수 있는 저장소이다.
리모트 저장소의 관리
리모트 저장소를 관리한다는 것은 다음과 같은 작업을 수행하는 것을 말한다.
리모트 저장소 추가 및 삭제
로컬 저장소에 리모트 저장소를 추가하거나 삭제할 수 있다.
브랜치관리
리모트 저장소의 브랜치를 관리한다.
추적 설정
로컬 저장소의 브랜치가 특정 리모트 저장소의 브랜치를 추적하도록 설정한다.
리모트 저장소는 Git을 활용한 협업과 개발에서 필수적인 요소이다. 이를 관리하면 다음과 같은 이점을 얻을 수 있다.
협업의 효율성,
버전의 관리,
소프트웨어 배포 및 유지보수 효율성의 향상시킨다
리모트 저장소의 추가
새로운 리모트 ㅈ ㅓ장소를 추가하려면 다음과 같이 명령어를 실행한다.
새로운 git 저장소의 생성
git init
이 명령어를 실행하면 현재 디렉토리에 .git 디렉토리와 함께 HEAD 파일이 생성된다.
깃 저장소
Git을 사용하여 코드와 기타 리소스를 관리하는데 사용되는 폴더이다.
깃 저장소에는 다음과 같은 정보가 포함된다.
파일의 변경 사항을 추적하는 정보, 커밋의 로그, 브랜치의 상태, 리모트 저장소에 대한 정보.
저장소는 여러개가 있을 수 있는데, 어떤 저장소는 읽고 쓰기 모두 할 수 있고, 어떤 저장소는 읽기 권한만 있을 수도 있다.
간단히 말해 Git을 활용해 일한다는 것은 remote repository를 관리하며 데이터를 push, pull 해가며 일하는 것이다.
리모트 저장소를 관리한다는 것은 저장소를 추가 삭제하는 것 뿐 아니라 브랜치를 관리하고 추적할지 말지 관리하는 것을 말한다.
Commit
2f87cdc4-647f-ca8c-c869-fed848180fe6
598fa067-867f-ef9c-b4c9-f53df54865a7
and dcr1.sn = (select max(sn) from dp_cntrmsr_rcord where abnrml_sittn_sn = dash.abnrml_sittn_sn and cntrmsr_step = 'IN')
브랜치와 태그를 저장하는 refs 폴더.
브랜치
Git 저장소의 복제본이다. 브랜치를 사용하면 코드의 변경사항을 독립적으로 관리할 수 있다.
깃 저장소는 트리구조로 이루어져 있는데, 루트노드는 저장소 최상위 위치(main 이나 master)를 나타내고,
브랜치는 트리구조의 하위 노드를 나타낸다. 브랜치는 루트노드에서 분기된 새로운 경로를 나타낸다.
브랜치의 활용
브랜치를 활용해 기존 상위 노드의 코드를 손상시키지 않고 개발 할 수 있다.
이를 새로운 기능개발, 버그 수정, 배포용 버전 준비 등 다양한 용도에 활용할 수 있다.
이는 코드의 안정성, 협업 효율성, 배포 효율성에 도움을 준다.
브랜치의 생성
git branch <브랜치 이름>
브랜치의 전환
git checkout <브랜치 이름>
브랜치의 병합
git merge <병합할 브랜치 이름>
브랜치의 삭제
git branch -d <삭제할 브랜치 이름>
태그
특정 커밋을 가리키는 표시이다. 일반적으로 릴리스 버전을 나타내는데 사용된다.
태그는 크게 두가지 종류로 나눌 수 있다.
경량 태그
경량 태그는 커밋의 SHA-1 해시를 가리킨다. 경량 태그는 비교적 가볍지만 주석을 추가할 수 없다.
git tag <태그 이름> [<커밋 ID>]
커밋 id를 생략하면 현재 head 커밋이, 태그가 가리키는 커밋이 된다.
특정 태그를 조회하려면 다음과 같은 명령어를 사용한다
git show <태그 이름>
해당 커밋의 정보를 출력하게 된다.
git tag -d <태그 이름>
커밋 자체는 삭제 되지 않으나, 태그가 사라진다.
주석이 달린 태그는 커밋의 해시와 주석을 가리킨다. 주석이 달린 태그는 경량 태그보다 무겁지만 주석을 추가할 수 있다.
따라서 log 등으로 태그를 참조하면 해당 주석도 함꼐 참조하게 된다.
주석은 계속 바꿀 수 있다. 주석이 달린 태그를 삭제하면 주석도 함께 삭제된다.
git tag -a <태그이름> -m <주석>
git tag -s <태그이름>
주석을 편집할 수 있는 편집기가 열린다.
설정파일
또한 .git 디렉토리에는 git 설정을 저장하는 파일도 포함된다.
config 파일
기본 설정을 저장한다.
git config 라는 도구로 설정 내용을 확인하고 변경할 수 있다. git은 이 설정에 따라 동작한다. 이때 사용 하는 설정 파일은 새가지나 된다.
/etc/gitconfig 파일
시스템의 모든 사용자와 모든 저장소에 적용되는 설정이다.
git config --system 옵션으로 이 파일을 읽고 쓸 수 있다.(이 파일은 시스템 전체 설정 파일이기 때문에 수정하려면 시스템의 관리자 권한이 필요하다.)
~/.gitconfig, ~/.config/git/config 파일
특정 사용자에게만 적용되는 설정이다. 특정 사용자(현재 사용하는 로컬 컴퓨터 시스템의 사용자)의 모든 저장소 설정에 적용된다.
.git/config
이 파일은 Git 디렉토리에 있고 특정 저장소에만 적용된다. --local 옵션을 사용하면 이 파일을 사용하도록 지정할 수 있다. 이 옵션이 디폴트로 사용된다.
각 설정은 역순으로 우선순위를 갖는다.'
elfprxhflrk todtjdehlsek.
리모트 저장소의 개념과 관리
리모트 저장소는 인터넷이나 네트워크 어딘가에 있는 저장소를 말한다.
리모트 저장소는 일반적으로 GitHub, GitLab과 같은 웹 기반 Git 호스팅 서비스에 위치한다.
리모트 저장소는 다음과 같은 목적으로 사용된다.
협업
리모트 저장소를 사용해 다른 개발자와 코드를 공유하고 협업할 수 있다.
버전관리
리모트 저장소를 사용해 코드의 변경 사항을 추적하고 원하는 버전의 코드로 되돌릴 수 있다.
배포
리모트 저장소를 사용해 소프트웨어를 배포할 수 있다.
리모트 저장소의 종류
리모트 저장소는 다음과 같은 두가지 종류로 분류된다.
공개 저장소
누구나 접근할 수 있는 저장소이다.
비공개 저장소
특정 사용자만 접근할 수 있는 저장소이다.
리모트 저장소의 관리
리모트 저장소를 관리한다는 것은 다음과 같은 작업을 수행하는 것을 말한다.
리모트 저장소 추가 및 삭제
로컬 저장소에 리모트 저장소를 추가하거나 삭제할 수 있다.
브랜치관리
리모트 저장소의 브랜치를 관리한다.
추적 설정
로컬 저장소의 브랜치가 특정 리모트 저장소의 브랜치를 추적하도록 설정한다.
리모트 저장소는 Git을 활용한 협업과 개발에서 필수적인 요소이다. 이를 관리하면 다음과 같은 이점을 얻을 수 있다.
협업의 효율성,
버전의 관리,
소프트웨어 배포 및 유지보수 효율성의 향상시킨다
리모트 저장소의 추가
새로운 리모트 ㅈ ㅓ장소를 추가하려면 다음과 같이 명령어를 실행한다.
새로운 git 저장소의 생성
git init
이 명령어를 실행하면 현재 디렉토리에 .git 디렉토리와 함께 HEAD 파일이 생성된다.
깃 저장소
Git을 사용하여 코드와 기타 리소스를 관리하는데 사용되는 폴더이다.
깃 저장소에는 다음과 같은 정보가 포함된다.
파일의 변경 사항을 추적하는 정보, 커밋의 로그, 브랜치의 상태, 리모트 저장소에 대한 정보.
저장소는 여러개가 있을 수 있는데, 어떤 저장소는 읽고 쓰기 모두 할 수 있고, 어떤 저장소는 읽기 권한만 있을 수도 있다.
간단히 말해 Git을 활용해 일한다는 것은 remote repository를 관리하며 데이터를 push, pull 해가며 일하는 것이다.
리모트 저장소를 관리한다는 것은 저장소를 추가 삭제하는 것 뿐 아니라 브랜치를 관리하고 추적할지 말지 관리하는 것을 말한다.
Commit
2f87cdc4-647f-ca8c-c869-fed848180fe6
598fa067-867f-ef9c-b4c9-f53df54865a7
and dcr1.sn = (select max(sn) from dp_cntrmsr_rcord where abnrml_sittn_sn = dash.abnrml_sittn_sn and cntrmsr_step = 'IN')