Git?
컴퓨터 파일의 변경사항을 추적하고 여러 사용자들 간에 해당 파일 작업을 조율하기 위한 버전관리 시스템(VCS)이다.
Q) 버전관리 시스템은 뭐지? 형상관리 시스템과는 뭐가 다른가?
A) 형상관리란 스프트웨어 구성 관리라고도 하는데, 이는 소프트웨어의 변경사항을 체계적으로 추적하고 통제하는 것. 소스코드 뿐만 아니라 개발 환경, 빌드 구조 등 전반적인 환경/내역에 대한 관리 체계를 정의하고 있다.
변경 관리 - 소스코드 변경 사항에 대한 관리
버전 관리 - 변경사항을 '버전'이란 개념을 통해 관리
형상 관리 - 위의 개념을 포함한 프로젝트와 관련된 모든 변경사항을 관리
이런 식으로 각각의 개념들이 있는데 형상 관리>버전 관리>변경 관리 순서로 개념이 구체화된다.
(*형상관리와 버전관리가 같은 것인 줄 알았는데 알고 보니까 형상관리가 조금 더 상위 개념이다)
형상관리 시스템에는 중앙집중식 형상관리 시스템과 분산형 형상관리 시스템으로 나뉘는데, 중앙집중식 형상관리 시스템은 한 서버에서 모든 것들을 다뤄서 중앙제어 컴퓨터가 에러가 나면 공동작업하는 데이터가 모두 사라지지만 분산형 형상관리 시스템은 내가 수정한 작업 및 내역들이 통째로 다운로드 되고, 공유할 수 있기 때문에 한 명의 컴퓨터가 고장이 나더라도 다른 사람들이 복구/공유를 할 수 있어 작업 시 발생한 컴퓨터의 문제를 보완할 수 있다.
그렇다면 다시 돌아와서 Git은 즉 변경 사항에 대해서 '버전'이라는 개념을 통해서 관리하고, 내가 올린 Repository의 완전한 복사본을 로컬에 저장하는 방식으로 조율하는 시스템이라고 볼 수 있다.
git --version
git config --global core.autocrlf input
git config --global user.name 'Your_Name'
git config --global user.email 'Your_Email'
git config --global --list
git init을 통해서 master라는 브랜치를 형성하게 됨.
브랜치는 추적관리의 가장 큰 줄기라고 생각하면 됨
git init <!-- 버전관리 시작 명령 -->
git add . <!-- 전체 파일 선택 -->
git add '파일명' <!-- 특정 파일 선택 -->
git commit -m '프로젝트 생성(버전의 이름)' <!-- 버전 생성 -->
git log <!-- 버전 생성되었는지 확인 -->
git status <!-- 깃 상태 확인 -->
현재 프로젝트에서 변경사항 추적(버전관리)을 시작한다는 것. 브랜치(master)를 생성해서 진행한다.
브랜치를 생성했다고 해서 버전관리를 할 수 있는 것은 아니고 stage에 변경사항 추적할 특정 파일을 지정해야만 한다. 보통은 git add .를 통해서 모두 추적할 수 있도록 지정함
commit을 통해 메시지와 함께 버전을 생성할 수 있다.
그러나 버전 생성 이후 파일을 추가하면 마스터 브랜치에 프로젝트 생성을 했지만, 추가한 파일을 관리를 할 것인지 말 것인지를 git add.를 통해서 선언할 것. 기존의 프로젝트와 현재 수정한 버전은 git add를 하지 않으면 생성된 버전에 저장되지 않은 상태
이를 확인하려면 git status 하면 됨. 빨간색으로 터미널에 나오는 것이 있다면 저장이 아직 안되었다는 것. 혹은 VScode에서 u아이콘이 뜨면 저장 안된 것 (저장되면 m으로 바뀐다)
git remote add origin 저장소주소 <!-- 생성버전을 저장소에 저장하기(원격저장) -->
git remote -v <!-- 설정한 remote 목록을 확인 -->
git push origin master <!-- 저장소에 -->
저장소 개념
- 중앙 원격(remote) 저장소 : 여러 명이 같은 프로젝트를 관리하는데 사용하는 그룹 계정의 중립된 원격 저장소
- 로컬(local) 저장소 : local repository라고 불리고, 내 pc에 파일이 저장되는 개인 전용 저장소
출처 : GitHub으로 협업하는 방법
git branch <!-- 브랜치 목록 확인 -->
git branch -a <!-- 브랜치 목록과 원격제어 파일 이름 함께 확인 -->
git branch 브랜치명 <!-- 브랜치명에 해당하는 브랜치 생성 -->
git checkout 브랜치명 <!-- 브랜치명에 해당하는 브랜치로 이동하기 -->
브랜치 종류
- Master branch : 배포이력을 관리하기 위해 사용. 즉, 배포 가능한 상태만을 관리
- Develope branch : 다음 출시 버전을 개발하는 브랜치. 평소에는 이 브랜치를 기반으로 개발
- Feature branch : 기능을 개발하는 브랜치. develope 브랜치의 세부사항 개발 및 버그 수정시 사용
- Release branch : 이번 출시 버전을 준비하는 브랜치. develope브랜치가 모이면 release 브랜치로 분기
- Hotfix branch : 출시 버전에서 발생한 버그를 수정하는 브랜치. 수정 후 마스터 브랜치에 병합
Git Branch 종류(5가지)
*Tip
vscode에서 폴더 직접 안열고, 터미널 명령을 통해 코드 열시
터미널로 해당 경로에 들어간 뒤 code . 명령으로 열 수 있음.
만약 현재 vscode창에서 열고 싶다면 code . -r 로 입력하면 된다.
git reset --hard HEAD~1 <!-- 1단계 전 단계로 되돌리기 -->
git reset --hard ORIG_HEAD <!-- 되돌리기 이전 상태로 복구하기 -->
git reset --hard HEAD~2 <!-- 2단계 전 단계로 되돌리기 -->
git log <!-- 틈틈히 잘 변경되었는지 확인하는 것 중요! -->
git branch <!-- 브랜치 가져오기 -->
git branch -r <!-- 브랜치 목록 보기(만약 원격저장소와 로컬 저장소의 이름이 똑같으면 화살표로 표시됨 -->
git checkout -t 브랜치명 <!-- 원격저장소에 있는 다른 브랜치 가져오기 -->
git branch -d 브랜치명 <!-- 브랜치 삭제하기 -->
git checkout -b 브랜치명 <!-- 브랜치 생성과 동시에 체크아웃 하기 -->
git pull origin master <!-- 원격저장소 버전 불러오기 -->