ALOHA CLASS
/
Cloud
/
Git
Search
Share
Git
git 기초
Git 기초
1.
Git 이란?
2.
Git 다운로드
3.
Git 설치
Git 이란?
Git 설치
•
Github
•
주요 기능
1.
원격 저장소 호스팅
2.
협업 기능
3.
버전 관리
4.
이슈 트래킹
5.
코드 리뷰
6.
풀 리퀘스트
7.
소셜 네트워크 기능
8.
프로젝트 호스팅
9.
위키 호스팅
10.
웹 페이지 호스팅
•
Github 원격 저장소 생성
Github
Git 최초 설정
username 등록
email 등록
Git 최초 설정
•
원격저장소
로컬저장소
•
로컬저장소
원격저장소
원격저장소
로컬저장소
Git x Gitub 연동
Git 명령어
Git etc
Git 기본 branch 설정하기
git init 시, 기본 branch 를 main 으로 설정합니다.
Git 기본 branch 확인하기
Git 기본 branch 설정하기 master, main branch
1.
로컬 저장소 초기화
:
•
git init
: 새로운 Git 저장소를 초기화합니다.
2.
파일 추적 및 스테이징
:
•
git add <file>
: 변경된 파일을 스테이징 영역에 추가합니다.
•
git add .
: 모든 변경된 파일을 스테이징 영역에 추가합니다.
Git 기본 버전 관리
•
Github 원격 저장소 생성
•
Github 팀원 초대
•
Clone
•
Branch 관리
◦
Branch 생성
◦
Branch 제거
◦
Branch 전환
▪
git switch
▪
git checkout
•
Push
◦
최초 프로젝트 Commit & Push
(main)
•
Pull
◦
팀원이 최초 프로젝트 Pull
Git 팀 협업 버전 관리
•
git log
: 커밋 로그를 확인합니다.
•
git revert <commit>
: 이전 커밋을 되돌립니다.
•
git reset
: 스테이징 영역이나 작업 디렉토리를 초기화합니다.
Git 이력 관리
Git 캐시 삭제
Git의 캐시를 삭제하는 것은 .gitignore 파일의 변경사항을 적용하거나, 캐시로 인한 문제를 해결할 때 유용합니다.
주의할 점은 캐시 삭제 후 반드시 변경사항을 다시 스테이징하고 커밋해야 한다는 것입니다.
간혹 .gitignore (변경사항 무시 설정파일)에 특정 파일들을 변경사항에 반영되지 않도록 지정해도 변경사항에 감지가 되는 경우가 있습니다. 그 이유는 .gitignore 에 대한 캐시가 남아있어서 수정한 정보가 반영되지 않아서 입니다. 이럴 경우 Git 캐시 삭제를 통해 반영할 수 있ㅅ브니다.
Git 캐시 삭제
Github 자격 증명 관리
Github 에 계정 인증 시, 자격 증명 정보가 남는데, 다른 Github 계정으로 인증하기 위해서 기존 자격 증명을 제거 할 수 있습니다.
자격 증명 관리
1.
제어판
Github 자격 증명 관리
Git x Github 실습
Github 원격 저장소 만들기
Github 팀원 초대하기
Git Clone
Git Clone은 원격 저장소(Repository)의 소스 코드를 로컬 저장소로 복사하는 명령어입니다. 프로젝트의 전체 히스토리와 함께 모든 파일을 가져올 수 있습니다.
git Clone
Git Clone
branch 생성 및 반영
Git Branch는 독립적인 작업 공간을 만들어주는 기능으로, 메인 코드에 영향을 주지 않고 새로운 기능 개발이나 버그 수정을 할 수 있게 해주는 Git의 핵심 기능입니다.
각각의 브랜치는 다른 브랜치의 영향을 받지 않기 때문에, 여러 작업을 동시에 진행할 수 있습니다.
작업이 완료되면 메인 브랜치에 변경사항을 병합하여 작업을 완료할 수 있습니다.
branch 생성 및 전환
branch
switch
checkout
Git Commit
Git Commit은 변경사항을 기록하고 버전 관리하는 핵심 기능으로, 작업 내용을 저장소에 영구적으로 저장하는 스냅샷입니다.
스냅샷 (Snapshot)?
스냅샷이란 특정 시점의 파일 시스템 전체를 복사해서 보관하는 것을 말합니다. Git에서는 커밋할 때마다 현재 프로젝트의 상태를 스냅샷으로 저장하여, 나중에 필요할 때 이전 버전으로 돌아갈 수 있게 합니다.
•
스냅샷은 프로젝트의 전체 파일 내용을 그대로 복사하는 것이 아니라, 변경된 파일만 저장하고 변경되지 않은 파일은 이전 스냅샷의 파일을 참조하는 방식으로 저장됩니다.
•
각 스냅샷은 고유한 해시값(커밋 ID)을 가지고 있어서 특정 버전을 쉽게 식별하고 관리할 수 있습니다.
•
이러한 스냅샷 시스템 덕분에 Git은 효율적인 버전 관리가 가능하며, 프로젝트의 히스토리를 안전하게 보관할 수 있습니다.
Git Commit
commit
Git Push
로컬 저장소의 변경 사항을 원격 저장소로 전송하여 업데이트하는 Git 명령어입니다.
commit된 변경 사항을 GitHub와 같은 원격 저장소와 동기화하는 데 사용됩니다.
Git Push
push
Git Pull
원격 저장소의 변경 사항을 로컬 저장소로 가져와서 병합하는 명령어입니다. fetch와 merge를 한 번에 수행하여 작업을 동기화합니다.
기본 명령어
Git Pull
pull
Git fetch
Git fetch는 원격 저장소의 최신 변경사항을 로컬 저장소로 가져오되, 현재 작업 중인 코드에는 영향을 주지 않는 안전한 명령어입니다.
Git fetch는 원격 저장소의 새로운 브랜치와 그 변경사항도 가져옵니다. 로컬에 없는 새 브랜치가 원격에 있다면, 원격 브랜치로 가져오게 됩니다.
원격의 새 브랜치가 로컬에 반영됨
Git fetch
fetch
로컬 브랜치와 원격 브랜치를 연결하는 Git 명령어입니다.
로컬 브랜치가 원격 브랜치를 추적하도록 설정하여, 이후
git push
나
git pull
명령어를 간단하게 사용할 수 있습니다.
기본 명령어
예시:
Git Branch
branch
Git Merge
서로 다른 브랜치를 하나로 통합하는 Git의 핵심 명령어로, 브랜치 간의 변경 사항을 하나의 브랜치로 결합합니다.
Git Merge 명령어
Git Merge
merge
Git Conflict(충돌)이란?
Git에서 충돌은 동일한 파일의 같은 부분을 여러 사람이 서로 다르게 수정했을 때 발생합니다. Git이 어느 변경 사항을 선택해야 할지 자동으로 판단하지 못하는 상황을 의미합니다.
Git Conflict & 충돌 해결
conflict
Git Pull Request
한 브랜치에서 다른 브랜치로 코드를 병합(Merge) 해달라고 요청하는 기능입니다.
특히 협업 환경에서 코드 리뷰 및 병합 과정을 시각적으로 관리할 수 있게 해줍니다.
Git Pull Request
pull request
PR
GitHub Fork란?
다른 사용자의 GitHub 저장소를 복사해 자신의 계정에 독립된 저장소로 생성하는 GitHub 기능
Git fork
fork
Git Amend
Git Amend는 가장 최근의 커밋을 수정할 수 있는 기능으로, 커밋 메시지나 파일 내용을 변경할 때 사용합니다.
Amend란?
Amend는 "수정하다"라는 뜻으로, Git에서는 마지막 커밋을 다시 작성하는 것을 의미합니다. 새로운 커밋을 만드는 것이 아니라, 기존 커밋을 덮어쓰는 방식입니다.
•
이미 푸시된 커밋을 amend하면 히스토리가 변경되므로, 협업 시 주의가 필요합니다.
•
로컬에서만 작업한 커밋을 수정할 때 가장 유용하게 사용됩니다.
•
커밋 메시지의 오타를 수정하거나, 빠뜨린 파일을 추가할 때 자주 사용됩니다.
Git Amend 명령어
Git amend
commit
Git Cherry-pick
Git Cherry-pick은
특정 커밋을 선택하여 현재 브랜치에 적용
하는 기능으로, 다른 브랜치의 특정 변경사항만 가져올 수 있습니다.
Cherry-pick이란?
Cherry-pick은 말 그대로 "체리를 골라 먹는다"는 의미로, 다른 브랜치에 있는 여러 커밋 중에서 원하는 커밋만 선택해서 현재 브랜치에 적용하는 것을 말합니다.
•
전체 브랜치를 병합하지 않고도 특정 기능이나 버그 수정만을 가져올 수 있어 매우 유용합니다.
•
각 커밋은 고유한 해시값(커밋 ID)을 가지고 있어서 정확한 커밋을 지정할 수 있습니다.
•
Cherry-pick을 사용하면 불필요한 커밋 없이 필요한 변경사항만 깔끔하게 적용할 수 있습니다.
Git Cherry-pick 명령어
Git cherry-pick
cherry-pick
Git Reset
Git Reset은
커밋 히스토리를 되돌리고 작업 디렉토리의 상태를 변경
하는 명령어로, HEAD 포인터를 이전 커밋으로 이동시켜 변경사항을 관리합니다.
HEAD 포인터란?
HEAD는 현재 작업 중인 브랜치의 최신 커밋을 가리키는 포인터입니다. Git에서 HEAD를 이동시키면 작업 디렉토리의 상태가 해당 커밋 시점으로 변경됩니다.
•
HEAD는 현재 체크아웃된 브랜치의 최신 커밋을 참조하며, 새로운 커밋이 생성될 때마다 자동으로 업데이트됩니다.
•
HEAD를 이동시키면 프로젝트의 상태를 과거의 특정 시점으로 되돌릴 수 있으며, 이는 실수를 수정하거나 이전 버전을 검토할 때 유용합니다.
•
Git Reset은 HEAD를 이동시키는 대표적인 명령어이며, reset의 옵션에 따라 작업 디렉토리와 스테이징 영역의 상태가 달라집니다.
Git reset
reset
Git Revert
Git Revert는
이전 커밋을 취소하고 되돌리는 명령어
로, 작업 내역을 유지하면서 안전하게 변경사항을 되돌릴 수 있는 기능입니다.
Git Revert 명령어
Git revert
revert
Git Stash
Git Stash는
현재 작업 중인 변경사항을 임시로 저장하고
나중에 다시 적용할 수 있게 해주는 기능입니다. 작업 디렉토리를 깨끗하게 유지하면서
다른 브랜치로 전환하거나 긴급한 작업을 처리할 때 유용
합니다.
Stash란?
Stash는 현재 작업 중인 변경사항(수정된 파일, 스테이징된 파일)을 임시 저장소에 보관하는 기능입니다. 이를 통해 작업 디렉토리를 마지막 커밋 상태로 되돌릴 수 있으며, 나중에 저장한 변경사항을 다시 불러와 작업을 계속할 수 있습니다.
•
Stash는 스택 구조로 관리되어, 여러 개의 stash를 저장하고 필요할 때 선택적으로 적용할 수 있습니다.
•
각 stash는 고유한 식별자를 가지고 있어 특정 stash를 쉽게 찾고 관리할 수 있습니다.
•
Stash를 사용하면 커밋하지 않은 변경사항을 안전하게 보관하면서 다른 작업을 진행할 수 있어 효율적인 워크플로우가 가능합니다.
Git statsh
stash
Git Release
Git Release는 소프트웨어의 특정 버전을 공식적으로 배포하는 과정으로, 안정적인 코드 스냅샷을 태그로 표시하여 사용자에게 제공하는 핵심 기능입니다.
릴리스(Release)란?
릴리스는 개발된 소프트웨어의 특정 버전을 사용자에게 공식적으로 배포하는 것을 의미합니다. Git에서는 태그를 사용하여 특정 커밋을 릴리스 버전으로 표시하고, 이를 통해 안정적인 버전을 관리합니다. • 릴리스는 주로 시맨틱 버저닝(Semantic Versioning)을 따라 v1.0.0, v2.1.3과 같은 형식으로 명명됩니다. • 각 릴리스는 변경 사항, 버그 수정, 새로운 기능 등을 포함한 릴리스 노트와 함께 제공됩니다. • GitHub, GitLab 등의 플랫폼에서는 릴리스 페이지를 통해 소스 코드, 바이너리 파일 등을 다운로드할 수 있게 제공합니다.
Git Release 명령어
기본 명령어
Git Release
tag
Git TIP
커밋 메시지 컨벤션
Conventional Commits 기반 실무 적용 가이드
기본 형식 (표준)
커밋 메시지 컨벤션
Git 브랜치 네이밍 컨벤션
기본 원칙 (공통)
•
소문자 사용
•
단어 구분은
/
와
-
사용
•
의미가 한눈에 보이게
브랜치 네이밍 컨벤션
Git 협업 실습
역할분담
Git 협업 게시판 만들기
Git Actions
GitHub Actions
코드를 호스팅하고 버전 관리를 할 때 사용할 수 있는 자동화 및 CI/CD(Continuous Integration/Continuous Deployment) 도구
Workflow (워크플로우)
GitHub Actions