Git

[Git] Git | 장점 | branch 전략 | 동작원리

하나둘세현 2022. 10. 25. 15:15
728x90

📌 Git?

👍 Git의 장점

네트워크 전송 속도

분산형이 아닐 경우 소스 커밋을 하기 위해 수작업으로 해야했기 때문에 번거롭다. 그래서 네트워크 연결되어 있어야 한다. 은 분산형 버전관리 시스템이 여서 네트워크가 연결되지 않은 환경에서도 로컬에서 커밋이 가능하다.

네트워크 연결된 환경에 가서 서버에 파일을 올리고 내려받기 가능하다. 

로컬로 관리함으로 속도가 빠르다. 

파일처리

hash 알고리즘을 사용하여 파일의 변경 여부 확인 가능 

변경되지 않은 파일 경우 이전 파일에 대한 링크만 저장함으로 작은 파일 사이즈와 속도 처리가 빠르다. 

동시 다발적인 개발

책임성 소스를 누가 올렸는지에 대해 확인 가능하다.

대형 프로젝트 효율적으로 지원

 

Branch 전략

깃은 branch를 생성하고 삭제하는데 편리하다. 

branch관리는 Gitflow를 통해 한다. 

<branch 종류>

Master branch

git 저장소를 생성하고 첫번째 커밋을 하면 그 branch가 Master branch가 된다.  

Hotfix branch

Master branh에서 파생되었다. 

Relese branch

Developr branch에서 파생되어 Release branch에서 관리하다 Develop branch로 머지가 된다. 

위에 그림을 참고하면 Release branch의 화살표는 Master branch와 Develop branch을 향하고 있다. 

그럼 두 곳에 머지가 된다.  실질적인 개발은 Develop branch에서 한다.  

Develop branch

Develop branch에서 신규 기능을 추가해야 하면 Feature branch를 생성한 후 작업한다. 

Develop branch에 머지가 된다. 하나의 branch만 생성되는게 아니라 여러가지 branch가 생성된다. 

Develop branch에서 바로 Master branch로 되는 경우는 없다. 

Feature branch

Hotfix branch, Release branch, Freature branch는 하나가 아니다.  

Hotfix branch는 여러가지 hottfix의 그룹이다. 즉 폴더이다. 

feature branch 또한 마찬가지다. 

 

branch가 많이 보여 복잡하게 보일 수 있지만 효율적인 방법이다. 

하나의 branch에서 다른 하나의 branch로 향하는것은 merge이다. 

Git의 동작원리 

1. snapshot

데이터를 가져오거나 프로젝트를 저장할때 그 시점의 파일에 대한 스냅샷을 저장한다.

⇨ 파일을 효과적으로 저장한다.

변경되지 않은 파일은 다시 파일을 저장하지 않고 이전에 지정한 동일한 파일을 링크만 한다. 

(링크만 한다? ⇨ 파일을 저장하지 않음으로 파일이 갖고 있는 저장공간을 사용하지 않는다.

                       ⇨ 링크 정보만 저장한다.)

2. checksum

데이터를 저장하기 전에 checksum을 구하고 이 checksum을 통해 데이터 관리한다.

파일의 변경여부 확인을 위해 SHA-1 해쉬 사용

(16진수 문자 40개로 구성된 문자열, 파일의 내용 또는 디렉토리 구조를 기반으로계산한다.)

파일이름이 아닌 컨텐츠의 hash 값을 저장한다.

⇨ 파일명이 변경되도 내용이 동일하면 같은 hash이다. 

 

3. Sections (Woring Directory, Staging Area, Repository)

Repository에서 클론을 하면 Working Directory가 생성된다. 생성된 곳에 A 파일을 하나 추가하고 그대로 두면 Unstaging 상태가 된다. Staging 영역에 추가를 하게 되면? Repository를 생성하고 관리하는 파일들에 대한 목록이 있다. 그래서 파일을 생성하게 되면 관리하고 있는 목록에 A 파일을 등록해야한다. A 파일은 Staging Area로 이동한다. Stage Files에는 add라는 명령어가 추가된다.  그다음에는 Staging Area에 추가했더라도 Repository에 변경사항이 없어 저장이 되지 않는다. 

변경사항이 있게 하려면 Commit 명령어를 입력한다. 그러면 변경된 사항이 Repository에 저장된다. 

728x90

'Git' 카테고리의 다른 글

[Git] Git 명령어  (0) 2022.10.30
[Git] Git Workflow  (0) 2022.10.29
[Git] Git 설치 | 설정 파일 | 전역 설정  (0) 2022.10.26