버전관리시스템❗️
Linus Benedict Torvalds가 개발. 대형 프로젝트를 효율적으로 지원할 수 있으며 속도처리가 빠름.
여러 명이 branch를 만들어서 merge하는 게 가능하기 때문에 동시다발적 개발이 가능.
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
Sections
'시스템 전역 경로'에 저장됨 (여기에 있는 시스템 설정 파일은 건들지 않는 게 좋음. 일반적으로 이걸 건드릴 일이 거의 없음)
사용자명으로 된 디렉토리 : USER_HOME/.gitconfig
라는 이름으로 된 파일이 있음
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를 하려면 반드시 입력이 되어야 하는 부분.
os에서 자동으로 생성한 파일이나 log파일 등은 같이 커밋이 되면 안되기 때문에 프로젝트를 생성할 때는 ignore파일을 추가 & 설정하고 시작하는 것이 좋음.
mac은 DS_Store
라는 파일이 자동으로 생성됨. 이 파일은 설정 파일이기 때문에 커밋이 같이 되어버리면 곤란함. 그래서 Ignore파일을 따로 만들어서 관리할 필요 없는 파일들을 따로 관리하는 것.
Q: 그렇다면 관리를 해야하는 파일은?
➡️ 프로젝트와 관련된 모~든 파일은 버전 관리가 이루어져야함. 만약에 프로젝트의 문서 파일이 소스에 대한 설명을 가지고 있는 파일이라면 변경될 때 같이 변경될 수 있게 같이 관리가 되어야 함.
➡️ touch .DS_Store
: DS_Store라는 파일 만들기. .
가 앞에 붙는 파일들은 '숨김'파일들이기 때문에 ls
를 입력해도 나오지 않는다. 대신에 ls -al
로 확인해야 한다.
본 포스팅은
권오성님의 '누구나 쉽게 배우는 Git(깃) & Github(깃허브)' 강좌 내용을 기반으로 하였습니다.
링크: https://www.udemy.com/course/how_to_start_git_and_github/