[Git] Git 기초 알아보기

Dico·2020년 10월 8일
1

[Git]

목록 보기
1/3
post-thumbnail
post-custom-banner

Git이란?

버전관리시스템❗️
Linus Benedict Torvalds가 개발. 대형 프로젝트를 효율적으로 지원할 수 있으며 속도처리가 빠름.
여러 명이 branch를 만들어서 merge하는 게 가능하기 때문에 동시다발적 개발이 가능.


Git-flow: 병렬적 브랜치 관리전략

Git은 브랜치를 생성하고 삭제하는 것이 쉬운 편.
다음은 Git-flow를 시각화한 그림이다:

  • Master: 처음 생성하면 Master가 됨. Master라는 것은 이것이 언제든지 release가 가능한 상태여야 한다! 아직 완료되지 않은 작업이 들어간 버전은 새로운 브랜치를 만들어 작업해야 함. 여기에서만 작업하면 안됨!!!

  • Hotfix: master브랜치에서 파생되는 브랜치. 마스터에서 중대한 결함이나 버그가 발견되었을 때 마스터에서 브랜치를 따고, 버그를 수정한 다음에 다시 master에 merge를 하게 됨. 하나가 아님. 그룹. 폴더라고 볼 수 있음.

  • Release: 필요한지 아닌지에 대한 의견이 분분함. Develop 브랜치에서 파생되어서 관리를 하다가 develop 브랜치로 다시 merge됨.

  • Develop: 실제적인 개발이 이루어지는 곳. develop에서 바로 master로 가는 경우는 없음. 보통 release를 거쳐서 master로 merge가 됨.

  • Feature: 새로운 기능이 추가될 때 작업이 이루지는 곳. 여기서 작업하고 develop에 merge됨. 이것도 하나가 아님. feature라는 폴더가 있고 그 안에 여러가지 feature들이 있는 형태. 왜냐, 하나의 기능만 한번에 개발하는 것이 아니라 여러명이 동시다발적으로 각각 다른 기능을 개발하고 있을 수 있기 때문에.


동작원리

Snapshot

  • 저장할 때마다 그 시점의 스냅샷을 저장
  • 변경되지 않은 파일은 재저장하지 않고 이전에 지정한 동일한 파일을 링크로 걸어둠 (링크정보만 저장하기 때문에 저장공간을 많이 차지하지 않음)

Checksum

  • 데이터 저장 전 체크섬(체크섬: 중복검사의 형태. 순환중복검사) 을 구해 데이터를 관리함.
  • SHA-1 해쉬(16진수 문자 40개로 구성된 문자열; 파일의 내용 또는 디렉토리 구조를 기반으로 계산)라는 걸 사용
  • 파일이름이 아닌 컨텐츠의 해쉬 값을 저장. 파일명이 변경되어도 내용이 동일하면 같은 해쉬를 갖는다.

Sections

  • Working directory: clone을 하게 되면 working directory가 생성이 됨.
  • Staging area: local 저장소 같은 느낌. 스테이징 영역에는 생성된 repository와 관리하고 있는 파일들의 목록이 있음. Working directory에서 파일을 생성하고 등록하게 되면은 staging area에 추가됨. 그러나 여기에 추가가 된다고 해도 repository에 변경사항이 저장이 되지는 않음.

설정파일위치

  1. '시스템 전역 경로'에 저장됨 (여기에 있는 시스템 설정 파일은 건들지 않는 게 좋음. 일반적으로 이걸 건드릴 일이 거의 없음)

  2. 사용자명으로 된 디렉토리 : USER_HOME/.gitconfig 라는 이름으로 된 파일이 있음

  3. Working 디렉토리 경로 /XXX/.git/config 이것이 working directory가 되는 것. 설정정보가 저장이 됨.

우선순위는 3 ➡️ 2 ➡️ 1 (역순!!!!)
만약에 사용자가 2번에다가 이메일 주소를 설정해 놓아도, 3번에다가 이메일 주소를 설정하게 되면 3번의 이메일 주소를 우선으로 해서 커밋작업을 진행함.


사용자정보 입력

ls -al | grep .gitconfig 라고 터미널에 입력했을 때 아무것도 나오지 않는다면 git설치 후 한번도 사용자 정보를 입력한 적이 없기 떄문!

작업자 정보 입력 하는 방식: git config –-global user.name hannah

작업자 이메일 정보 입력 하는 방식: git config –-global user.email hannah@gmail.com

Git commit이나 push를 하려면 반드시 입력이 되어야 하는 부분.


Ignore 파일 설정

os에서 자동으로 생성한 파일이나 log파일 등은 같이 커밋이 되면 안되기 때문에 프로젝트를 생성할 때는 ignore파일을 추가 & 설정하고 시작하는 것이 좋음.

mac은 DS_Store라는 파일이 자동으로 생성됨. 이 파일은 설정 파일이기 때문에 커밋이 같이 되어버리면 곤란함. 그래서 Ignore파일을 따로 만들어서 관리할 필요 없는 파일들을 따로 관리하는 것.

Q: 그렇다면 관리를 해야하는 파일은?
➡️ 프로젝트와 관련된 모~든 파일은 버전 관리가 이루어져야함. 만약에 프로젝트의 문서 파일이 소스에 대한 설명을 가지고 있는 파일이라면 변경될 때 같이 변경될 수 있게 같이 관리가 되어야 함.
➡️ touch .DS_Store: DS_Store라는 파일 만들기. .가 앞에 붙는 파일들은 '숨김'파일들이기 때문에 ls를 입력해도 나오지 않는다. 대신에 ls -al로 확인해야 한다.


Reference

본 포스팅은
권오성님의 '누구나 쉽게 배우는 Git(깃) & Github(깃허브)' 강좌 내용을 기반으로 하였습니다.

링크: https://www.udemy.com/course/how_to_start_git_and_github/

profile
프린이의 코묻은 코드가 쌓이는 공간
post-custom-banner

0개의 댓글