diff --git a/gitea-사용가이드.md b/gitea-사용가이드.md new file mode 100644 index 0000000..0ecddb1 --- /dev/null +++ b/gitea-사용가이드.md @@ -0,0 +1,414 @@ +# Gitea 작성 가이드 + +## 📋 매일 사용하는 Git 워크플로우 + +### 작업 시작 전에 항상! +```bash +git pull origin main +``` +> 다른 기기에서 작업했거나 웹에서 수정한 내용을 받아옵니다. + +### 작업 완료 후에 항상! +```bash +git add . +git commit -m "적절한 커밋 메시지" +git push origin main +``` +> 변경사항을 저장하고 Gitea에 업로드합니다. + +## 📝 커밋 메시지 작성 규칙 + +### Conventional Commits 스타일 (영어) +```bash +feat: 새로운 기능 추가 +fix: 버그 수정 +docs: 문서 변경 +style: 코드 포맷팅 (기능 변경 없음) +refactor: 코드 리팩토링 +test: 테스트 추가/수정 +chore: 빌드나 설정 변경 +``` + +### 실제 사용 예시 +```bash +git commit -m "feat: 계산기 기능 추가 및 오류 처리" +git commit -m "fix: 0으로 나누기 오류 해결" +git commit -m "docs: README에 설치 가이드 추가" +git commit -m "refactor: main.py 코드 구조 개선" +git commit -m "test: 수학 연산 단위 테스트 추가" +``` + +## 📁 추천 폴더 구조 + +### 전체 코드 작업공간 +``` +/Users/hyungiahn/Documents/code/ +├── coding-guide/ # 이 가이드 저장소 +├── python-projects/ # Python 프로젝트들 +│ ├── calculator/ +│ ├── web-scraper/ +│ └── data-analysis/ +├── javascript-projects/ # JavaScript 프로젝트들 +│ ├── weather-app/ +│ ├── todo-list/ +│ └── game-collection/ +├── learning/ # 학습 프로젝트들 +│ ├── algorithms/ +│ ├── tutorials/ +│ └── practice/ +└── experiments/ # 실험적인 코드들 + ├── ai-testing/ + └── new-tech/ +``` + +### 새 프로젝트 시작시 +```bash +# 항상 code 폴더에서 시작 +cd /Users/hyungiahn/Documents/code + +# 새 프로젝트 클론 또는 생성 +git clone http://git.hyungi.net/hyungi/new-project.git +# 또는 +mkdir new-project && cd new-project +git init +``` + +## 🗂️ 개별 프로젝트 폴더 구조 템플릿 + +### 하나의 프로젝트만 있는 경우 +``` +내-프로젝트/ +├── README.md # 프로젝트 설명 +├── requirements.txt # Python 의존성 목록 +├── package.json # JavaScript 의존성 목록 +├── .gitignore # Git에서 제외할 파일들 +├── src/ # 실제 코드 폴더 +│ ├── main.py +│ └── utils/ +├── tests/ # 테스트 코드 폴더 +├── docs/ # 문서 폴더 +└── examples/ # 사용 예시 폴더 +``` + +### 여러 프로젝트를 모아둔 경우 +``` +코딩-프로젝트들/ +├── README.md +├── python/ +│ ├── 계산기/ +│ ├── 웹크롤러/ +│ └── 데이터분석/ +├── javascript/ +│ ├── 날씨앱/ +│ ├── 게임모음/ +│ └── 할일관리/ +├── 학습노트/ +│ ├── 알고리즘/ +│ └── 디자인패턴/ +└── 유틸스크립트/ +``` + +## 📖 README.md 작성 템플릿 + +```markdown +# 프로젝트 이름 + +## 📖 이 프로젝트는 무엇인가요? +프로젝트에 대한 간단한 설명을 여기에 적어주세요. + +## 🚀 어떻게 설치하고 실행하나요? +```bash +# 필요한 라이브러리 설치 +npm install +# 또는 +pip install -r requirements.txt + +# 프로그램 실행 +npm start +# 또는 +python src/main.py +``` + +## 💡 주요 기능들 +- 기능 1: 어떤 일을 하는지 설명 +- 기능 2: 어떤 일을 하는지 설명 +- 기능 3: 어떤 일을 하는지 설명 + +## 🔧 사용 방법 +```python +# 코드 사용 예시를 여기에 +from src.main import Calculator + +calc = Calculator() +result = calc.add(5, 3) +print(result) # 8 +``` + +## 📝 개발하면서 배운 것들 +### 새로 알게 된 것 +- 학습 포인트 1 +- 학습 포인트 2 +- 학습 포인트 3 + +### 앞으로 추가하고 싶은 기능 +- 개선 계획 1 +- 개선 계획 2 +- 개선 계획 3 + +## 📅 개발 일지 +- 2024-07-15: 기본 기능 구현 완료 +- 2024-07-16: 오류 처리 기능 추가 +- 2024-07-17: 사용자 인터페이스 개선 +``` + +## 🚫 .gitignore 파일 설정 (Git에서 제외할 파일들) + +### Python 프로젝트용 +``` +# Python 캐시 파일들 +__pycache__/ +*.pyc +*.pyo + +# 가상환경 폴더 +venv/ +env/ +.venv/ + +# 설정 파일 (비밀번호 등이 들어있는) +.env +config.ini +secrets.json + +# 로그 파일 +*.log + +# 맥/윈도우 시스템 파일 +.DS_Store +Thumbs.db +``` + +### JavaScript 프로젝트용 +``` +# Node.js 모듈들 +node_modules/ + +# 빌드 결과물 +dist/ +build/ + +# 환경 설정 파일 +.env +.env.local +.env.production + +# 로그 파일 +npm-debug.log* +yarn-debug.log* + +# 시스템 파일 +.DS_Store +Thumbs.db +``` + +### 모든 프로젝트 공통 +``` +# 에디터 설정 폴더 +.vscode/ +.idea/ + +# 임시 파일들 +*.swp +*.tmp +*.bak + +# 압축 파일들 (용량이 큰) +*.zip +*.tar.gz +``` + +## 🔧 Git 처음 설정하기 + +### 맨 처음 한 번만 하는 설정 +```bash +# 내 이름과 이메일 등록 +git config --global user.name "홍길동" +git config --global user.email "gildong@example.com" + +# 코드 작업 폴더로 이동 +cd /Users/hyungiahn/Documents/code + +# Gitea에서 저장소 가져오기 (리버스 프록시 환경) +git clone http://git.hyungi.net/사용자명/저장소명.git +cd 저장소명 +``` + +### SSH 키 설정하기 (비밀번호 없이 사용하려면) +```bash +# SSH 키 만들기 +ssh-keygen -t ed25519 -C "gildong@example.com" + +# 공개키 내용 확인하기 +cat ~/.ssh/id_ed25519.pub + +# 위 내용을 복사해서 Gitea 설정에서 SSH 키로 등록 +# 등록 후에는 이렇게 주소 변경 +git remote set-url origin git@gitssh.hyungi.net:사용자명/저장소명.git +``` + +## 🔄 브랜치 사용하기 (고급 기능, 선택사항) + +### 새로운 기능을 개발할 때 +```bash +# 새 브랜치 만들기 +git checkout -b feature/새로운기능 + +# 개발하고 커밋하기 +git add . +git commit -m "feat: 새로운 기능 구현" + +# 메인 브랜치로 돌아가서 합치기 +git checkout main +git merge feature/새로운기능 +git push origin main + +# 다 쓴 브랜치 삭제하기 +git branch -d feature/새로운기능 +``` + +## ✅ 새 프로젝트 시작할 때 체크리스트 + +### Gitea 웹에서 하는 일 +- [ ] 새 저장소 만들기 +- [ ] README.md 파일 포함하기 +- [ ] .gitignore 템플릿 선택하기 +- [ ] 라이선스 선택하기 (MIT 추천) + +### 내 컴퓨터에서 하는 일 +- [ ] `git clone` 으로 저장소 가져오기 +- [ ] README.md 내용 채우기 +- [ ] .gitignore 파일 확인하고 수정하기 +- [ ] 첫 번째 커밋하고 푸시하기 + +## 📅 매일/주간 할 일 체크리스트 + +### 매일 코딩할 때 +- [ ] `git pull origin main` (작업 시작 전) +- [ ] 코드 작성하고 수정하기 +- [ ] `git add .` (변경사항 스테이징) +- [ ] `git commit -m "메시지"` (커밋하기) +- [ ] `git push origin main` (Gitea에 업로드) + +### 일주일에 한 번 정리할 때 +- [ ] README.md 파일 업데이트하기 +- [ ] 안 쓰는 파일들 정리하기 +- [ ] 학습 노트 정리해서 추가하기 +- [ ] 다음 주 개발 계획 세우기 + +## 🎯 자주 사용하는 Git 명령어들 + +### 현재 상태 확인하기 +```bash +git status # 지금 어떤 파일이 변경되었는지 보기 +git log --oneline -10 # 최근 10개 커밋 간단히 보기 +git diff # 정확히 어떤 부분이 바뀌었는지 보기 +``` + +### 실수했을 때 되돌리기 +```bash +git reset HEAD~1 # 마지막 커밋 취소 (파일 변경사항은 그대로) +git checkout -- 파일명 # 특정 파일의 변경사항 취소 +git clean -fd # 추적되지 않는 새 파일들 삭제 +``` + +### 브랜치 관리하기 +```bash +git branch # 현재 있는 브랜치들 보기 +git branch -d 브랜치명 # 브랜치 삭제하기 +git checkout 브랜치명 # 다른 브랜치로 이동하기 +``` + +### 원격 저장소 관리하기 +```bash +git remote -v # 연결된 원격 저장소 주소 보기 +git fetch origin # 원격 저장소 정보만 가져오기 (병합은 안함) +git pull origin main # 원격 저장소 내용 가져와서 자동 병합 +``` + +## 💡 리버스 프록시 환경 설정 팁 + +### 현재 환경 구성 +``` +HTTP Git: git.hyungi.net → DS1525+ 10300 포트 (Gitea 웹/HTTP) +SSH Git: gitssh.hyungi.net → DS1525+ 10322 포트 (Gitea SSH) +``` + +### HTTP 접속 (웹/Git) +```bash +# 웹 브라우저에서 +http://git.hyungi.net + +# Git 명령어에서 +git clone http://git.hyungi.net/사용자명/저장소명.git +``` + +### SSH 접속 (Git) +```bash +# SSH Git 클론 (git@ 는 그대로, 뒤에 본인 계정명) +git clone git@gitssh.hyungi.net:본인계정명/저장소명.git + +# 예시: hyungi 계정의 my-project 저장소 +git clone git@gitssh.hyungi.net:hyungi/my-project.git + +# 기존 저장소 SSH로 변경 +git remote set-url origin git@gitssh.hyungi.net:hyungi/저장소명.git +``` + +### SSH 설정 파일 (선택사항) +```bash +# ~/.ssh/config 파일 생성 +nano ~/.ssh/config + +# 아래 내용 추가: +Host gitssh.hyungi.net + HostName gitssh.hyungi.net + User git + IdentityFile ~/.ssh/id_ed25519 +``` + +## 🆘 자주 발생하는 문제와 해결방법 + +### 1. "Your branch is behind" 오류가 날 때 +```bash +# 원인: 다른 곳에서 변경한 내용이 있음 +# 해결: 먼저 pull 받고 나서 push +git pull origin main +git push origin main +``` + +### 2. "conflict" (충돌) 오류가 날 때 +```bash +# 파일을 열어서 충돌 부분을 직접 수정 +# <<<<<<< HEAD 와 >>>>>>> 사이의 내용을 정리 +# 수정 후 다시 커밋 +git add . +git commit -m "fix: 충돌 해결" +git push origin main +``` + +### 3. 잘못 커밋했을 때 +```bash +# 커밋 메시지만 바꾸고 싶을 때 +git commit --amend -m "올바른 커밋 메시지" + +# 마지막 커밋을 완전히 취소하고 싶을 때 +git reset HEAD~1 +``` + +--- + +📌 **이 가이드를 즐겨찾기해두고 모를 때마다 참고하세요!** + +💡 **팁**: 처음에는 복잡해 보이지만, 매일 `pull → add → commit → push` 만 반복하면 금세 익숙해집니다! + +📅 **마지막 업데이트**: 2024-07-15 \ No newline at end of file