Git ? Github ?

손지웅·2025년 3월 11일

Git과 GitHub 기본 개념 정리


1. Git과 GitHub의 차이

GitGitHub
로컬(내 컴퓨터)에서 버전 관리를 하는 도구온라인에서 Git 리포지토리를 호스팅하는 플랫폼
코드 변경 사항을 추적하고 기록함다른 사람과 코드 공유 및 협업 가능
인터넷이 없어도 사용 가능인터넷이 필요함
git commit을 사용하여 변경 사항 저장git push를 사용하여 변경 사항 업로드

2. 리포지토리(Repository)란?

  • 프로젝트의 코드, 파일, 변경 기록이 저장되는 공간
  • 로컬(내 컴퓨터)과 원격(GitHub) 두 가지 형태로 존재
  • Git을 이용하여 파일 변경 이력을 관리할 수 있음

3. Git과 GitHub, 내 컴퓨터 연결

┌────────────────────────────────┐
│        내 컴퓨터 (Local)       │
└────────────────────────────────┘
         │
┌────────────────────────────────┐
│     Git (버전 관리 도구)       │
└────────────────────────────────┘
         │
┌────────────────────────────────┐
│     GitHub (온라인 저장소)     │
└────────────────────────────────┘

4. GitHub와 로컬 간 작업 흐름

1) 내 컴퓨터에서 작업

git init                     # Git 초기화
git add .                     # 모든 변경 사항 추가
git commit -m "수정사항"       # 변경 사항 커밋

### 2) **GitHub에 코드 업로드**
```bash
git remote add origin <리포지토리 URL>  # 원격 저장소 연결
git push -u origin master                # 변경 사항 업로드

3) GitHub에서 코드 받아오기

git pull origin master  # 최신 코드 가져오기

5. GitHub에서 협업하기

  • Fork: 다른 사람의 프로젝트를 내 계정으로 복사하여 작업 가능
  • Branch: 새로운 기능 추가 및 버그 수정 시 기존 코드와 독립적으로 작업 가능
  • Pull Request: 작업한 내용을 원본 리포지토리에 반영 요청

GitHub 협업 흐름: Fork, Branch, Pull Request

(1) 원본 리포지토리 (Original Repository)
├──> (2) 내 계정으로 Fork (Forked Repository)
│ → 다른 사람의 프로젝트를 내 계정으로 복사

├──> (3) 새로운 브랜치 생성 (New Branch)
│ → 새로운 기능 추가 또는 버그 수정용 작업 공간 만들기

├──> (4) 코드 수정 및 작업 (Modify & Work)
│ → 직접 코드를 수정하고 기능 개발 진행

├──> (5) Pull Request 요청 (PR)
│ → "내가 수정한 내용을 원본 리포지토리에 반영해 주세요!" 요청 보내기

└──> (6) 리뷰 후 병합 (Merge)
│ → PR이 승인되면 원본 리포지토리에 반영 (병합 완료!)


6. Git과 GitHub의 핵심 명령어 정리

명령어설명
git init현재 폴더를 Git 리포지토리로 초기화
git clone <URL>GitHub에 있는 리포지토리를 내 컴퓨터로 복사
git status변경된 파일 상태 확인
git add .모든 변경 사항을 스테이징 영역에 추가
git commit -m "메시지"변경 사항을 기록(스냅샷 저장)
git push origin master로컬 변경 사항을 GitHub에 업로드
git pull origin masterGitHub의 최신 코드 내려받기

7. Git을 사용하는 이유

Git을 사용하는 이유

버전 관리 (Version Control)

  • 코드 변경 사항을 추적하고 이전 버전으로 쉽게 되돌릴 수 있음
  • 여러 개의 파일을 v1, v2처럼 수동으로 관리할 필요 없음
  • 예제:
    git commit -m "버그 수정"
    git log --oneline  # 변경 이력 확인

백업 및 복구 (Backup & Recovery)

  • 프로젝트가 손상되거나 실수로 파일을 삭제해도 Git을 사용하면 복구 가능
  • 특정 시점의 코드 상태로 돌아갈 수 있음
  • 예제:
    git checkout <커밋 ID>  # 특정 버전으로 되돌리기

협업 지원 (Collaboration)

  • 여러 명이 동시에 같은 프로젝트에서 작업 가능
  • 코드 충돌을 방지하고, 각 개발자가 독립적으로 작업한 후 하나로 합칠 수 있음
  • 예제:
    git branch feature-branch  # 새로운 브랜치 생성
    git merge feature-branch   # 기능 개발 후 병합

변경 내역 추적 (Tracking Changes)

  • 코드가 누가, 언제, 왜 변경되었는지 추적할 수 있음
  • 실수로 코드를 삭제했을 때도 쉽게 복구 가능
  • 예제:
    git diff  # 변경된 코드 확인

배포 및 협업 자동화 (CI/CD 지원)

  • GitHub, GitLab과 같은 서비스와 연동하여 자동화된 배포 및 테스트 가능
  • 예제:
    name: CI/CD Pipeline
    on: push
    jobs:
      test:
        runs-on: ubuntu-latest
        steps:
          - uses: actions/checkout@v2
          - run: npm install && npm test

0개의 댓글