2024. 9. 4. 18:51ㆍGit & Github
git이란?
Git
git-scm.com
[Git Documentation]
Git - Documentation
Documentation Reference The official and comprehensive man pages that are included in the Git package itself. Quick reference guides: GitHub Cheat Sheet | Visual Git Cheat Sheet Book Videos Length: 05:59 Length: 04:26 What is Git? Length: 08:15 Length: 05:
git-scm.com
분산형 버전 관리 시스템(DVCS)
여러 개발자들이 하나의 프로젝트를 효율적으로 개발할 수 있도록 도와주는 시스템
Visual Studio Code
menu - settings - default profile - Terminal › Integrated › Default Profile: Windows - git bash 로 설정
Commit
- 파일의 4가지 상태
- Untracked : git 시스템에 의해 관리되고 있지 않은 상태 (ex. 새로 생성한 파일) → 빨간색 글씨
- Unmodified : commit 된 이후로 수정되지 않은 상태 → 빨간색 글씨
- Modified : commit된 이후로 수정된 상태 → 빨간색 글씨
- Staged : commit 대기중인 상태 → 초록색 글씨
수정 전 → 빨간색 글씨
수정 후 → 초록색 글씨
git bash 명령어
# git 상태 확인
git status
# git 초기화
git checkout -- ./
# git에 파일 추가
git add 파일명
# git 현재 파일 추가
git add .
# git commit 메세지 추가
git commit -m "메시지"
# git 로그 확인
git log
# 파일 변경사항 보기
git diff
# 커밋 기록 보기
git log
# 커밋 기록을 통해 commit 아이디를 확인하여 commit 단위로 변경
ctrl + q : git log 종료
# git bash 터미널 기록 지우기
clear
# 커밋되지 않은 변경사항 되돌리기
git restore 파일명
# 특정 커밋 작업 되돌리기
git revert 커밋아이디
# 커밋 기록을 남기고 되돌릴 수 있음(:wq!)
# 특정 커밋으로 되돌아가기
# 돌아가고자 하는 기록의 커밋 아이디 입력
git reset 커밋아이디 --mixed
--mixed : 기본 옵션
--soft : 커밋 아이디의 아후의 변경사항(로컬)이 staged로 남는 옵션
--hard : 커밋 아이디의 변경사항 이후가 아예 사라져버리는 옵션
Github
GitHub: Let’s build from here
GitHub is where over 100 million developers shape the future of software, together. Contribute to the open source community, manage your Git repositories, review code like a pro, track bugs and fea...
github.com
Git 프로젝트 전용 원격 저장소
local : 현재 내가 개발하고 있는 컴퓨터
remote : 협업의 위한 저장소(github)
# git 저장소 생성
git init
# 개발자 정보 입력(작업자 등록)
# 히스토리 파악을 위함
git config
ex. 계정 등록
git config user.name
git config user.email
# 프로젝트에 연결된 remote repository 관리
git remote
ex.
git remote add origin(remote명) 깃허브주소(ssh)
git remote : 조회
git remote -v
# local 프로젝트 작업사항을 remote repository에 올리기
git push
ex.
git push origin master
# remote repository를 local에 다운받기
git clone
ex.
git clone 깃허브주소(ssh)
Branch
소프트웨어 개발에서 메인 코드베이스와는 독립적으로 새로운 기능이나 버그 수정을 안전하게 작업할 수 있는 분리된 작업 환경
complict : 깃 공유시 문제 상황
merge : 코드리뷰를 마친 Branch 작업 사항을 메인 코드베이스에 합치는 것
# remote 브랜치 작업 사항 현재 브랜치에 다운로드하기
git pull
# 브랜치 관리
git branch 브랜치명
git branch -v : 로컬에 있는 브랜치 목록
git branch -a : remote에 올라간 모든 브랜치 확인
git branch -D 브랜치명 : 해당 브랜치 삭제
#
git push origin :브랜치명
git push origin :test1
# 특정 브랜치로 작업 환경 변경
git switch 브랜치명
# 특정 브랜치 작업 사항을 현재 브랜치에 합치기
git merge 브랜치명
* 방식
feature 브랜티 작업 내용이 merge 대상 브랜치의 HEAD 뒤에
1. fast forward : 바로 붙을 수 있는 상태
2. 3way merge : 바로 붙을 수 없는 상태
git merge 브랜치명 --no-ff : fast forward를 사용하지 않는 merge
# 특정 브랜치 작업 사항 뒤로 현재 브랜치 작업사항을 보내기
git rebase
git rebase master : master 그 다음으로 이동
git rebase --continue : 해당 위치에 rebase 진행
# remote 동기화
git fetch
# remote에서 삭제된 건 반영
git fetch --prune
Visual studio Code 내의 Git Graph Extension 추천
# 내 작업 브랜치를 대상 브랜치에 합칠때
git request
# github에서 진행 - Review changes 메뉴
# 특정 부분에 의견을 줄때
comment
file changes 메뉴에서 라인 별로 코멘트를 달 수 있음
# 이 코드를 합쳐도 될 것 같을때
approve
# 초기 프로젝트 세팅
# 빈 Git 저장소를 만들거나 기존 저장소를 다시 초기화
git init
# 계정 등록
git config
# 레포지토리 생성 및 연동
git remote
git push
---------------------- 작업시 이 부분 계속 반복!
# 브랜치로 개발
git branch
git swithch
git add
git commit
# Pull request와 코드 리뷰
# 머지하기
git merge
---------------------- 작업시 이 부분 계속 반복!
- github 내 리포지토리 협업자 등록 : repository - settings - collaborators
# git flow
- Master : 제품 출시 버전을 관리하는 브랜치, 항상 안정적인 상태를 유지해야 함, 언제든지 실제 서비스로 나가도 무방한 상태.
- Develop : 개발 중인 기능들이 통합되는 브랜치, 다음 릴리스(버전)를 준비하는 개발 작업이 이루어짐, 개발용 브랜치.
- Feature : 새로운 기능 개발을 위해 develop 브랜치에서 파생된 브랜치, 개발이 완료되면 develop 브랜치에 머지, 각 기능별 개발하고 있는 브랜치.
- Release : 다름 릴리스(버전)를 준비하는 단계에서 최종 수정 및 버그 수정을 위해 develop 브랜치에서 파생되는 브랜치(일종의 스냅샷)
- Hotfix : 긴급한 버그 수정을 위해 master 브랜치에서 파생, 수정 후 master와 develop 브랜치에 머지, 운영중인 master 시점에서 수정되어서 머지해줌으로써 안정적인 운영을 할 수 있도록 함.
# github flow
- Master : 제품 출시 버전을 관리하는 브랜치, 항상 안정적인 상태를 유지해야 함
- Feature : 새로운 기능 개발을 위해 master 브랜치에서 파생된 브랜치, 개발이 완료되면 master 브랜치에서 머지(좀 더 엄격한 관리를 요함)
# gitlab flow
# trunk based development
git hooks
특정한 git 이벤트(ex. commit 명령어 실행)가 발생할 때 자동으로 스크립트가 실행되도록 설정하는 기능
- pre-commit : 커밋 생성하기 직전에 실행
- post-commit : 커밋 완료 후 실행
- pre-push : push 되기 직전에 실행
Github Actions
Repository에 일어나는 이벤트를 감지하고 특정 로직을 실행