From 1632e5e15b8dd9f50dace0f9960021521e418642 Mon Sep 17 00:00:00 2001 From: tae2564 Date: Tue, 2 Dec 2025 23:53:30 +0900 Subject: [PATCH] =?UTF-8?q?git=20=EC=82=AC=EC=9A=A9=EB=B2=95=20=EC=B6=94?= =?UTF-8?q?=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 7 +++ Git_사용법.txt | 113 +++++++++++++++++++++++++++++++++++++++++++++++ git_init.bat.bat | 91 ++++++++++++++++++++++++++++++++++++++ git_upload.bat | 26 +++++++++++ 4 files changed, 237 insertions(+) create mode 100644 .gitignore create mode 100644 Git_사용법.txt create mode 100644 git_init.bat.bat create mode 100644 git_upload.bat diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..1fac5d3 --- /dev/null +++ b/.gitignore @@ -0,0 +1,7 @@ +# .gitignore +__pycache__/ +*.py[cod] +.venv/ +venv/ +.env +.vscode/ \ No newline at end of file diff --git a/Git_사용법.txt b/Git_사용법.txt new file mode 100644 index 0000000..105ba9a --- /dev/null +++ b/Git_사용법.txt @@ -0,0 +1,113 @@ +Git + +방식 : 내 컴퓨터에도 서버와 똑같은 전체 저장소 사본을 가진다. + +Commit : 내 PC에만 버전 이력 남길 수 있다. +Push : 서버로 전송 +Branch : 따로 가지쳐서(폴더 복사가 아닌 포인터만 이동) 작업 후 나중에 합치기 쉽다. + +Working Directory : 실제 코드를 수정하는 폴더 +Staging Area : 커밋할 파일만 골라서 올려두는 가상의 공간(git add) +Repository : 확정된 버전들이 저장되는 곳(git commit) + +Step 0 : 최초 한번 설정, 누가 코드를 짰는지 이름표를 붙이는 작업 +git config --global user.name "tae2564" +git config --global user.email "tae2564@gmail.com" + +Step 1. 프로젝트 가져오기 (Clone) : Gitea의 저장소를 PC로 가져온다. +git clone https://git.tae2564.synology.me/tae2564/ProjectName.git +cd ProjectName + +Step 2. 코드 수정 및 업로드 +2.1 작업 시작 전 최신 코드 받기 +git pull +2.2. 상태 확인 : 어떤 파일이 수정되었는지 확인한다. +git status +2.3. 수정한 파일 중 커밋할 파일을 Staging Area에 추가한다. +git add main.py # 특정 파일만 담기 +git add . # 수정된 모든 파일 담기 (가장 많이 씀) +2.4. Commit : 버전 확정, 내 PC에 버전을 기록한다. +git commit -m "수정 내용" +2.5. Push : 서버 전송, Gitea 서버로 코드를 업로드한다. +git push origin main # 처음엔 git push -u origin main을 한 번 해줘야한다. +git push # 이 후엔 git push 만 해도된다. +2.6 되돌리기(Reset) +git reset --soft HEAD~1 # 방금 한 커밋을 취소하고 파일은 살려둠 (Staging 상태로) +git reset --hard HEAD~1 # 방금 한 커밋을 취소하고 파일 수정내역까지 싹 날림 (주의!) + +Step 3. Branch 활용 +기존 코드는 그대로 두고 수정한 코드로 테스트해보고 싶을 때 브랜치를 사용한다. +3.1. 브랜치 생성 및 이동 +이제부터 수정하는 코드는 원본 main에 영향을 주지 않는다. +git switch -c BranchName # BranchName라는 이름의 브랜치를 만들고 이동 +3.2. 작업 후 커밋 +git add . +git commit -m "수정 내용" +3.3. 원본(main)에 합치기(Merge) 테스트가 성공적이어서 원본에 반영하고 싶다면 +git switch main # 다시 본진으로 복귀 +git merge BranchName # 작업한 브랜치를 끌어와서 합침 +git push # 서버에 반영 +3.3 다 쓴 브랜치 삭제 +git branch -d BranchName # -d 옵션은 delete의 약자 + +Python 프로젝트 필수 팁 (.gitignore) +Python을 쓸경우 컴파일된 파일(__pycache__)이나 가상환경 폴더(venv)는 Git에 올리면 안된다. 지저분해지고 충돌난다. +프로젝트 최상위 폴더에 .gitignore라는 파일을 만들고 다음 내용을 추가한다. (텍스트 파일) +# .gitignore 파일 내용 +__pycache__/ +*.py[cod] +.venv/ +venv/ +.env +.vscode/ + +VS Code 사용시 왼쪽 메뉴의 소스제어(Source Control) 탭에서 add, commit, push, diff를 GUI로 지원한다. +좌측 확장(Extensions) 메뉴에서 Git Graph 설치 : 커밋 이력을 시각적으로 보여준다. +1. 저장소 가져오기 (Clone) +F1 키를 누르고 Git: Clone 입력 후 엔터. +주소 입력: 아까 Gitea에서 만든 주소 입력 : https://git.tae2564.synology.me/tae2564/Finder.git +폴더 선택: 소스 코드를 저장할 PC 내 폴더 선택. +로그인: 아이디/비번 물어보면 Gitea 계정 입력. +열기: "복제된 리포지토리를 여시겠습니까?" 하면 [열기(Open)] 클릭. +2. 핵심 루틴: 수정 -> 담기 -> 커밋 -> 푸시 +VS Code 좌측의 [소스 제어 (Source Control)] 아이콘이 메인 작업 공간이다. +2.1 수정 (Modify) +파일을 수정하고 저장(Ctrl+S)하면, 소스 제어 탭의 '변경 사항(Changes)' 목록에 파일이 뜹니다. +파일 옆에 M(Modified) 마크가 뜹니다. +파일을 클릭하면 Diff(비교) 화면이 열려 이전 버전과 뭐가 달라졌는지 바로 보여줍니다. +2.2 담기 (Stage) = git add +커밋할 파일을 선택하는 단계입니다. +파일 이름 옆의 + (변경 내용 스테이징) 버튼을 누릅니다. +그러면 파일이 '스테이징된 변경 사항(Staged Changes)' 으로 이동합니다. (장바구니에 담긴 상태) +2.3 커밋 (Commit) = git commit +내 PC에 저장하는 단계입니다. +입력창(메시지)에 "검색 알고리즘 수정"이라고 적습니다. +위쪽의 [커밋(Commit)] 버튼(또는 Ctrl+Enter)을 누릅니다. +파일들이 목록에서 사라집니다. (로컬 저장소에 안전하게 저장됨) +2.4 푸시 (Push) = git push +Gitea 서버(NAS)로 보내는 단계입니다. +커밋을 하고 나면 버튼이 [변경 내용 동기화(Sync Changes)] 로 바뀝니다. (파란색 버튼) +이걸 누르면 내 코드가 NAS로 올라갑니다. +3. 브랜치 활용 (새로운 시도 할 때) +'주식 검색기'의 기본 로직은 놔두고, 실험적인 기능을 넣고 싶을 때 씁니다. +3.1 브랜치 생성: +VS Code 왼쪽 하단 파란색 상태 표시줄을 보면 main (또는 master)이라고 적힌 글씨가 있습니다. +클릭 -> [+ 새 분기 만들기...] 선택 -> 이름 입력 (예: feature/rsi-test). +3.2 작업: +이제 코드를 막 수정해도 원본(main)은 안전합니다. +작업 후 위와 똑같이 커밋(Commit) 합니다. +3.3 브랜치 변경: +왼쪽 하단 브랜치 이름을 클릭해서 언제든지 main과 feature/rsi-test를 왔다 갔다 할 수 있습니다. (파일 내용이 순식간에 바뀝니다.) +4. 시각적 확인 (Git Graph) +아까 설치한 Git Graph를 써봅시다. +좌측 하단 상태 표시줄에 [Git Graph] 라는 글씨를 클릭합니다. (안 보이면 F1 -> Git Graph: View 입력) +아름다운 그래프가 나옵니다. +누가 언제 커밋했는지, 브랜치가 어떻게 갈라졌다 합쳐지는지 한눈에 보입니다. +특정 점(커밋)을 클릭하면 그 당시 파일 상태를 볼 수 있습니다. + + + + + + + diff --git a/git_init.bat.bat b/git_init.bat.bat new file mode 100644 index 0000000..1d412e1 --- /dev/null +++ b/git_init.bat.bat @@ -0,0 +1,91 @@ +@echo off +chcp 65001 > nul +cls +echo ======================================================== +echo Git 초기 설정 마법사 V2 (for Gitea) +echo ======================================================== +echo. +echo [!] 이 파일은 프로젝트 폴더의 최상위에 위치해야 합니다. +echo [!] Gitea에서 저장소를 생성한 후, HTTPS 주소를 준비해주세요. +echo. + +:: 1. 원격 저장소 URL 입력받기 +set /p REMOTE_URL="[입력] Gitea 저장소 주소 (HTTPS)를 붙여넣으세요: " + +if "%REMOTE_URL%"=="" ( + echo [오류] 주소가 입력되지 않았습니다. 창을 닫고 다시 실행해주세요. + pause + exit +) + +echo. +echo -------------------------------------------------------- +echo [Step 0] Git 사용자 정보 확인... +:: 사용자 이름이 설정되어 있는지 확인합니다. +git config user.name >nul 2>&1 +if %ERRORLEVEL% NEQ 0 ( + echo - 사용자 정보가 없습니다. 설정을 시작합니다. + echo. + set /p GIT_USER="[입력] 사용자 이름 (예: tae2564): " + set /p GIT_EMAIL="[입력] 이메일 주소 (예: tae2564@gmail.com): " + + :: 입력받은 정보를 이 프로젝트에만 적용(local) 할지, PC 전체(global)에 할지 선택 + :: 여기서는 편의상 Global로 설정합니다. + git config --global user.name "%GIT_USER%" + git config --global user.email "%GIT_EMAIL%" + echo - 사용자 정보 등록 완료! +) else ( + echo - 기존 사용자 정보가 감지되었습니다. 건너뜁니다. +) + +echo. +echo [Step 1] 저장소 초기화 중... +git init + +echo. +echo [Step 2] .gitignore 파일 생성 중 (Python용)... +if not exist .gitignore ( + ( + echo __pycache__/ + echo *.py[cod] + echo .venv/ + echo venv/ + echo .env + echo .vscode/ + echo .idea/ + echo *.log + ) > .gitignore + echo - .gitignore 파일이 생성되었습니다. +) else ( + echo - .gitignore 파일이 이미 존재하여 건너뜁니다. +) + +echo. +echo [Step 3] 파일 담기 및 첫 커밋... +git add . +git commit -m "최초 프로젝트 업로드 (Script Auto Commit)" + +echo. +echo [Step 4] 브랜치 이름 변경 (master - main)... +git branch -M main + +echo. +echo [Step 5] 원격 저장소 연결... +git remote remove origin 2>nul +git remote add origin %REMOTE_URL% + +echo. +echo [Step 6] 서버로 업로드 (Push)... +echo - 로그인 창이 뜨면 아이디와 비밀번호를 입력하세요. +git push -u origin main + +echo. +echo ======================================================== +if %ERRORLEVEL% == 0 ( + echo [성공] 모든 설정이 완료되었습니다! + echo 이제부터는 git_upload.bat 파일을 사용해 수정사항을 올리세요. +) else ( + echo [실패] 오류가 발생했습니다. 위 메시지를 확인해주세요. +) +echo ======================================================== +pause \ No newline at end of file diff --git a/git_upload.bat b/git_upload.bat new file mode 100644 index 0000000..3770300 --- /dev/null +++ b/git_upload.bat @@ -0,0 +1,26 @@ +@echo off +chcp 65001 +echo ============================================== +echo Git Auto Uploader (Gitea) +echo ============================================== + +:: 1. 변경된 모든 파일 담기 +echo [Step 1] Adding files... +git add . + +:: 2. 커밋 메시지 입력받기 (입력 안 하면 날짜로 자동 입력) +set /p msg="Commit message (Enter for auto-date): " +if "%msg%"=="" set msg=Auto Update: %date% %time% + +:: 3. 로컬 저장소에 커밋 +echo [Step 2] Committing with message: "%msg%" +git commit -m "%msg%" + +:: 4. 서버로 푸시 (업로드) +echo [Step 3] Pushing to Gitea Server... +git push origin main + +echo ============================================== +echo Upload Complete! +echo ============================================== +pause \ No newline at end of file