1. Git이란?
Git은 소스 코드의 버전 관리를 위한 분산형 버전 관리 시스템(DVCS)이다. 코드 변경 내역을 추적하고 여러 사람이 협력하여 프로젝트를 진행할 수 있도록 도와준다. Git의 주요 기능은 코드의 변경 이력을 기록하고, 특정 시점으로 되돌아가거나, 여러 작업을 병합하는 등 다양한 버전 관리 기능을 제공한다.
Git은 로컬(사용자 드라이브)에서 버전을 관리하므로 네트워크가 없어도 작업할 수 있다. 또한, 분산형 시스템이기 때문에 각 클라이언트가 전체 저장소의 사본을 가지고 있어, 중앙 서버에 문제가 발생해도 작업을 계속할 수 있다.
2. GitHub란?
GitHub는 Git 저장소를 호스팅하는 클라우드 기반 서비스. Git과 달리 웹 기반 인터페이스를 제공하여 사용자들이 프로젝트를 보다 쉽게 관리할 수 있도록 돕습니다. GitHub는 협업에 특화된 기능들을 제공한다.
3. Git의 주요 명령어
사용할 폴더에서 shift+오른쪽 마우스를 클릭하면 Open Git Bash here을 실행시키거나 VS에서 터미널을 실행시켜 명령어를 입력하면 된다.
- git init: 새로운 git 지역저장소를 생성한다. 해당 폴더에 .git이라는 파일이 생성되는데, 파일 탐색기에서 숨긴항목까지 볼수있도록 설정해야 확인이 가능하다.
- git clone: 원격 저장소를 로컬로 복제한다.
- git add: 변경된 파일을 스테이지에 추가하여 커밋 대상으로 설정한다.
- git commit: 스테이지에 있는 변경 사항을 저장소에 기록한다.
- git pull: 원격 저장소의 변경 사항을 가져온다.
- git push: 로컬 저장소의 변경 사항을 원격 저장소에 반영한다.
- git branch: 브랜치를 확인하고, 새로운 브랜치를 생성하거나 삭제할 수 있다.
- git checkout: 브랜치를 전환하거나 특정 커밋으로 이동한다.
- git merge: 다른 브랜치의 변경 사항을 병합한다.
- git stash: 현재 변경 사항을 임시 저장한다.
4. Git과 GitHub의 관계
Git은 로컬에서 소스 코드 버전을 관리하는 도구인 반면, GitHub는 원격에서 Git 저장소를 호스팅하고 협업을 지원하는 플랫폼이다. 쉽게 말해, Git은 버전 관리 시스템이고 GitHub는 이를 통해 팀원들과 협력할 수 있도록 돕는 서비스이다.
개발자는 로컬에서 Git을 사용하여 코드를 작성하고 버전을 관리한 후, GitHub에 이를 푸시하여 팀원들과 공유하거나 협업할 수 있다. 또한, GitHub의 이슈, PR, 리뷰 기능을 활용해 프로젝트를 체계적으로 관리할 수 있다.
5.Git Fork
Fork는 GitHub에서 프로젝트를 복제하여 독립적인 작업을 수행할 수 있도록 만드는 기능이다. 주로 오픈소스 프로젝트에서 기여를 위해 사용되며, 다른 사람의 프로젝트를 자신의 계정으로 복제하여 자유롭게 수정하고 기능을 추가할 수 있다. 이렇게 수정된 내용을 원본 저장소에 반영하고자 할 때는 Pull Request를 통해 반영된다.
- Upstream: 원본 프로젝트다. 오픈소스 프로젝트나 공개된 저장소를 의미하며, 일반적으로 프로젝트 소유자의 권한 하에 관리된다.
- Origin: Fork를 통해 개인 계정에 생성된 독립적인 저장소. 개인의 GitHub 계정에 있는 복제본으로, 여기서 자유롭게 작업을 수행할 수 있다.
- Local: 지역 저장소이다. 작업 파일들이 존재하며, 변경 사항을 커밋하고 원격 저장소로 Push할 수 있다.
- Fork: GitHub에서 Upstream 프로젝트를 Fork하여 개인의 Origin 저장소를 생성한다.
- Clone: Fork한 Origin 저장소를 로컬 환경에 복제한다.(통째로 가져오는것)
- Local에서 작업: 로컬 저장소에서 파일을 수정하고, git add, git commit을 통해 변경 사항을 기록한다.
- Push: 로컬 저장소의 변경 사항을 Origin 저장소로 푸시한다.(변경사항 적용)
- Pull Request (PR): Origin 저장소의 변경 사항을 Upstream 프로젝트에 반영하기 위해 PR을 생성한다. 프로젝트 관리자가 PR을 검토하고 병합할 수 있다.
- Pull/fetch: 원격 저장소의 변경 사항을 가져와 로컬에 반영한다.(변경사항 적용)
- Upstream 변경 사항 반영: Upstream 저장소에서 변경 사항이 발생한 경우, 이를 git fetch 또는 git pull을 사용해 로컬과 Origin 저장소에 병합할 수 있다.
6.Git 흐름
📍영역
Workspace (작업 공간): 사용자의 컴퓨터에서 직접 수정하는 공간을 의미한다.
Staging (스테이징 영역): 커밋할 파일을 임시로 저장해 두는 영역이다. git add 명령어를 통해 파일을 스테이징하고, git commit을 통해 로컬 저장소에 기록한다.
Local Repository (로컬 저장소): 로컬에서 관리하는 Git 저장소로, 커밋된 파일의 버전 이력을 보관한다.
Remote Repository (원격 저장소): GitHub와 같은 플랫폼에 호스팅되는 원격 저장소이다. 로컬에서 git push 명령어를 사용해 원격 저장소에 변경 사항을 반영할 수 있다.
📍흐름
git add: 파일을 워크스페이스에서 스테이징 영역으로 추가한다.
git commit: 스테이징된 파일들을 로컬 저장소에 저장한다.
git push: 로컬 저장소의 변경 사항을 원격 저장소로 푸시한다.
git pull/git fetch: 원격 저장소와 로컬의 변경사항을 서로 반영한다.
git clone: 원격 저장소를 로컬로 복제한다.
git diff: 현재 작업 디렉토리의 변경 사항을 보여준다.
git reset은 커밋, 스테이징, 작업 디렉토리 상태를 이전 상태로 되돌릴 수 있다.