- Git vs Github
Git : VCS(Version Control System), 로컬에서 코드/파일의 변경 이력을 기록 및 관리하는 도구 (소프트웨어)
Github : Git 저장소 호스팅 서비스 및 공동 협업 플랫폼 (웹서비스)
Github Desktop은 CLI 기반인 Git을 쉽게 사용할 수 있도록 GUI로 제작된 프로그램.
세부적인 고급 기능을 사용하기 위해서는 CLI 명령어를 숙지할 필요가 있음.
- 일반적인 클라우드 서비스(Google Drive 등)와 Github의 차이점
1. 세부적인 수정 사항의 기록 여부
구글 드라이브와 같은 일반적인 클라우드 서비스에서는 단순한 버전 기록 기능만을 제공.
Github는 세부적인 수정 기록(커밋 로그)을 관리 할 수 있음. (위키의 수정 기록과 유사. 어느 부분을 누가/언제/왜 수정했는지 기록.)
2. 파일 동기화 방식 차이
구글 드라이브는 기본적으로 서버와 로컬이 실시간으로 동기화되지만, Github는 Commit(저장)/Push(업로드)/Pull(다운로드)를 통해 서버와 로컬을 수동으로 동기화해야 함.
3. 최대 저장용량 차이
구글 드라이브는 요금제에 따라 ~2TB(개인)/~5TB(기업) 용량 제공.
Github는 개별 파일 최대 100MB, 레포지토리 전체 최대 10GB 제한.
- Repository, Fork, Clone
- Repository (Repo) : 저장소
- Fork : 다른 사용자의 공개 Repository를 내 계정으로 복사
- Clone : Github(클라우드)의 Repository를 로컬로 복제. 최초 1회만
- Commit, Push, Pull
- Commit : 로컬의 변경사항 저장 및 수정 내용 정리(메모)
- Push : 로컬의 변경사항을 Github Repository로 업로드
- Pull : Github Repository의 변경사항을 로컬로 동기화 및 다운로드
- Branch, Issue - PR - Code Review, Merge
- Branch : 기능 추가 / 버그 수정 등을 위한 main에 영향을 주지 않는 독립적인 복사본
- Issue : 할 일, 버그, 개선 사항 등의 관리/기록
- PR (Pull Request) : 내 Branch에서 작업한 내용을 main Branch로 Merge 하기 위한 요청
- Code Review : PR에 올라온 코드를 검토하고 추가 수정하는 과정
- Merge : PR의 변경 사항을 main Branch로 병합 (다른 branch의 수정 사항을 main로 병합)
- Conflict
여러 사람이 같은 부분을 수정한 경우 어떤 버전을 선택해야 하는지 Git이 자동으로 판단할 수 없는 상황이 발생.
<<<<<<< HEAD
// 로컬 수정 내용
...
=======
// 원격 수정 내용
...
>>>>>>> origin/main
원하는 버전의 코드만 남기고 나머지 부분을 지우거나, 에디터의 기능을 활용하여 원하는 버전의 코드만 남도록 수정한 이후 Commit - Push 하여 해결.
- 작업 전 항상 Pull 하기
- 자주 Commit / Push 하기
- 팀원과 소통하여 Conflict 발생 상황을 최대한 줄이기
- .gitgnore
Git이 특정 디렉토리/파일을 추적하지 않도록 하는 예외 목록 설정 파일
(로그 파일, 컴파일된 파일, 패키지, OS 자동 생성 파일, 보안 관련 파일 등)
http://gitignore.io 활용하기
- .md
Markdown 문법으로 작성된 설명서
- Markdown 문법 설명
https://www.markdownguide.org/
- .md 파일 작성기
- README.md
프로젝트 소개, 설치/사용 방법, 버그 제보 방법, 기술 정보 등 설명
- .github 폴더
.github 폴더 안에 있는 .md 파일은 Github의 협업 기능들의 서식/가이드라인/정책을 설정하는 파일
기본 Issue 템플릿 : .github/ISSUE_TEMPLATE/템플릿명.md
- Repository - Settings - Features - Issues - Set up templates - Add template 를 통해 여러 종류의 템플릿 설정 가능
예시)
---
name: 기본 이슈 템플릿
about: 이 이슈에 대해 간략히 설명해주세요.
title: "[TAG] 이슈 제목"
labels: bug, documentation
assignees: ''
---
## 🧐 어떤 이슈인가요?
> 이슈에 대한 명확한 설명을 적어주세요.
## 💻 재현 순서
> 버그의 경우, 어떻게 재현할 수 있는지 순서대로 작성해주세요.
> 1.
> 2.
> 3.
## 📸 스크린샷
> 가능하다면 스크린샷을 첨부해주세요.
기본 PR 템플릿 : .github/PULL_REQUEST_TEMPLATE.md
- PR 템플릿은 하나만 설정 가능
예시)
## 🚀 어떤 변경 사항이 있나요?
> 이 PR은 어떤 변경 사항을 포함하고 있나요? 관련 이슈가 있다면 이슈 번호를 태그해주세요. (예: #123)
## 📸 스크린샷
> UI 변경 사항이 있다면, 스크린샷을 첨부해주세요.
## 🧪 테스트 방법
> 이 변경 사항을 어떻게 테스트할 수 있나요?
## ✅ 체크리스트
- [ ] 제 코드를 스스로 리뷰했습니다.
- [ ] 관련된 문서를 수정했습니다.
- [ ] 제 변경 사항은 새로운 경고를 발생시키지 않습니다.'Coding > Github & Git' 카테고리의 다른 글
| local/pushed commit 수정/삭제 방법 (reset/rebase/revert/checkout) (0) | 2025.10.29 |
|---|