Git
여러 명의 사용자들 간에 해당 파일들의 작업을 조율하기 위한 분산 버전 관리 시스템.
Git 명령어
git clone
- 순수 파일 + 프로젝트에 commit 되어 있던 히스토리 정보까지 모두 다운로드 되어 로컬저장소(Local Repository)를 만들어 줌. (download와 다름)
- .git 폴더(숨겨진 폴더) 생성. -> 해당 폴더=작업 폴더. 자동으로 서버와 링크가 맺어짐.
- Working Directory 상태
- 추적안함(Untracked) : 관리대상이 아님
- 추적함(Tracked)
- /수정 없음(Unmodified) : 변경이 없는 파일/스테이지됨(Staged) : 스테이지에 올라간 파일
- /수정함(Modified) : 변경된 파일
git add
- 작업 폴더를 관리 대상으로 지정하기 위해서 git add 명령어를 실행해야 함.
- Git add 명령어 실행 시 파일이 스테이지에 올라감.
- 이후부터 파일의 수정, 삭제 등의 모든 정보가 Git에 기록됨.
- 파일 상태 : 추적안함(Untracked), 수정함(Modified), 스테이지됨(Staged)
git commit
- 스테이징된 파일을 Local Repository에 등록하는 작업
- 스테이징된 파일을 스냅샷으로 찍어 Local Repository에 보관(내 컴퓨터에서만 가능)
- 스냅샷 = 하나의 히스토리 기록
- 파일 상태 : Staged, Unmodified
- -m 옵션 : 상세 내용 출력
git push
- Local Repository에 보관된 스냅샷을 다른 사람들과 공유하기 위해 Remote Repository에 업로드하는 작업
- Local Repository에 commit된 모든 내용이 Remote Repository에 올라감.
git pull/git fetch
Remote Repository에 올라온 최신 수정본 파일을 내 Local Repository로 업데이트
git checkout
작업을 수행할 branch 지정 명령어.
git diff
- 프로젝트 파일들에서 어떤 수정 사항들이 적용되었는지 전후를 비교해서 보여주는 명령어.
- Staged에 올라가지 않은 수정된 파일들만 확인 가능
git remote
- -v 옵션: 현재 연결되어 있는 Remote Repository 확인
- Git remote remove <name> : Remote Repository 연결 제거
Git GUI Client
SourceTree
Mac, Linux, Windows 지원
Git branch
하나의 프로젝트를 여러 갈래로 나누어 관리. 각각 독립된 Branch에서 소스코드를 변경하여 작업한 후 원래 버전과 비교하여 새로운 버전을 만들 수 있음.
branch 명령어
\#git branch (현재 위치한 branch 확인)
\#git branch -r (원격 저장소의 branch 확인)
branch 종류
Master branch
배포(Release) 이력을 관리하기 위해 사용. 배포 가능한 상태만 관리
Develop branch - dev
기능 개발을 위한 branch들을 병합하기 위해 사용. 모든 기능이 추가되고 버그 수정 후 배포 가능한 안정적이 상태인 경우 develop branch를 master branch에 병합(merge)
평소에는 이 branch를 기반으로 개발 진행.
Feature branch
새로운 기능 개발 및 버그 수정 필요 시 develop branch로부터 분기.
공유 필요 없음, Local Repository에서 관리.
개발 완료 시 develop branch로 병합(merge)하여 공유.
Release branch
배포를 위한 전용 branch.
Develop branch에서 배포 가능 수준의 기능이 모이거나 정해진 배포 일정이 되면 release branch 분기.
배포를 위한 최종적인 버그 수정, 문서 추가 등 release와 관련한 작업 수행.
직접적으로 관련된 작업을 제외하고는 release branch에 새로운 기능 추가 병합하지 않음.
Release branch에서 배포 가능 상태가 되면, master branch에 병합.
배포 준비 기간 동안 release branch 변경 사항에 대해 배포 완료 후 develop branch에도 병합.
Hotfix branch
배포한 버전에 긴급하게 수정이 필요한 경우, master branch에서 분기하는 branch.
빠르게 바로 배포 가능하도록 master branch에서 직접 branch 생성 후 필요한 부분만 수정하여 다시 master branch로 병합 및 배포.
branch conflict
branch 상황
- 서로 다른 파일 수정
- 서로 같은 파일 수정 + 서로 다른 부분 수정 + 서로 같은 부분 수정 – 이 경우 conflict(충돌) 발생
Branch conflict 해결 방법
개발자가 직접 어떤 것을 반영할지 판단하여 수정
‘======’ (구분자)를 기준으로
<<<<HEAD ~ : checkout 한 branch 변경 내용 (로컬 저장소)
~ >>>>>exp : 병합 대상 branch 변경 내용 (원격 저장소)
⇒ ====, <<<<HEAD, >>>>exp를 삭제하고 해당 코드 수정(및 병합) 후 저장
- master branch 자주 동기화하기!
- \#git status : 충돌 발생 파일 확인
'Git' 카테고리의 다른 글
Merge vs Rebase (0) | 2023.06.01 |
---|---|
Private IP Forwarding (Git WebHook) (0) | 2022.03.03 |