Git

1. Git
프로그램의 소스 코드가 변경되는 과정을 기록하고 관리하는 '분산 버전 관리 시스템(Version Control System)'
Git을 쓰는 핵심 이유 (3가지)
① 완벽한 버전 관리 (히스토리 추적)
코드에 버그가 생겼을 때, "어제 오후 3시, 누가 어떤 코드를 고쳐서 이 버그가 생겼는지" 정확하게 찾아낼 수 있습니다. 마치 타임머신을 타듯 원하는 과거의 특정 시점으로 코드를 되돌리는 것도 가능합니다.
② 안전한 협업 (브랜치 기능)
여러 사람이 같은 프로젝트를 동시에 개발할 수 있습니다. 메인 코드 줄기에서 각자 독립된 복사본인 브랜치(Branch, 가지)를 만들어 눈치 보지 않고 기능을 개발한 뒤, 나중에 하나로 안전하게 합칠(Merge) 수 있습니다.
③ 분산 저장 (안전성)
프로젝트의 전체 개발 기록이 중앙 서버에만 있는 것이 아니라, 참여하는 모든 개발자의 개인 컴퓨터(로컬)에도 똑같이 복제됩니다. 따라서 서버가 다운되거나 날아가도 완벽하게 복구가 가능합니다.
2. Git의 4가지 핵심 영역
좌측의 Local(개인 컴퓨터) 영역과 우측의 Remote(원격 서버, 예: GitHub) 영역으로 크게 나뉩니다.
- Working Directory (작업 디렉토리): 사용자가 실제로 코드를 수정하고 파일이 존재하는 개인 컴퓨터상의 폴더입니다.
- Staging Area (스테이징 영역): 다음 버전에 포함할 변경 사항들을 임시로 저장(대기)해 두는 가상의 공간입니다.
- Local Repo (로컬 저장소): 개인 컴퓨터에 버전 기록(Commit)이 영구적으로 저장되는 저장소입니다.
- Remote Repo (원격 저장소): GitHub, GitLab처럼 팀원들과 코드를 공유하고 백업하기 위해 온라인 서버에 존재하는 저장소입니다.
3. 주요 명령어 흐름
- git add: Working Directory에서 수정한 파일을 Staging Area로 올립니다. (커밋 준비)
- git commit: Staging Area에 대기 중인 파일들을 Local Repo에 기록하여 하나의 버전(스냅샷)으로 만듭니다.
- git push: Local Repo에 쌓인 커밋들을 Remote Repo로 업로드합니다.
- git clone: Remote Repo의 모든 내용을 내 컴퓨터로 통째로 다운로드하여 새로운 Local Repo와 작업 공간을 만듭니다.
- git fetch: 원격 저장소(GitHub 등)에 팀원들이 올린 새로운 커밋이 있는지 확인하고 업데이트된 내용을 가져옵니다. 하지만 내 개인 작업 공간(Working Directory)에 있는 코드 파일들을 강제로 병합하거나 바꾸지 않습니다.
- git merge: git fetch로 가져온 원격의 최신 커밋들을 내 현재 작업 코드에 합치거나, 내가 기능을 개발하기 위해 따로 만들었던 브랜치(feat/login 등)를 메인 브랜치(main)에 합칠 때 사용합니다.
- git clone: 다른 사람이 만든 오픈소스 프로젝트를 내 컴퓨터로 가져오거나, 새로운 회사/팀에 합류하여 기존 프로젝트 코드를 처음으로 컴퓨터에 다운받을 때 딱 한 번 사용합니다.
- git checkout / git switch (로컬 저장소 ➔ 작업 디렉토리): 로컬 저장소에 기록된 여러 브랜치 사이를 자유롭게 이동할 때 사용합니다. 예를 들어 git checkout main을 치면 내 작업 디렉토리의 파일들이 순식간에 main 브랜치의 최신 상태로 바뀝니다.
* creates의 의미 - 이미지에서 아래쪽 초록색 화살표에 적힌 creates는 별도의 Git 명령어가 아니라, git clone 명령어를 실행했을 때 일어나는 현상을 설명하는 단어입니다.
- git clone을 실행하면 원격 저장소(Remote Repo)의 데이터를 기반으로 내 컴퓨터에 로컬 저장소(Local Repo)를 새로 생성(creates)하고, 동시에 내가 바로 코딩을 시작할 수 있도록 작업 디렉토리(Working Directory)에 파일들을 펼쳐서 생성(creates)해 준다는 메커니즘을 시각적으로 나타낸 것입니다.
Git 설치(GitHub연결)
1. Git 설치 및 GitHub 연결
Git 설치
https://git-scm.com/install/windows
Git - Install for Windows
Click here to download the latest (2.54.0) x64 version of Git for Windows. This is the most recent maintained build. It was released on 2026-04-20. Other Git for Windows downloads Standalone Installer Git for Windows/x64 Setup. Git for Windows/ARM64 Setup.
git-scm.com
GitHub 연결
- GitHub 가입
- 새로운 저장소(New repository) 생성
- 저장소 이름 및 공개여부(Public/Private) 체크 후 생성
2. Git 실행 명령어
1. Git CMD 접속(Window 환경), Git bash 접속(Linux 환경)
echo "# hancomAIacademy" >> README.md
# 프로젝트 시작 및 로컬 설정(어떤 프로젝트인지 설명하는 안내서 역할)
# README.md라는 마크다운 파일을 만들고, 그 안에 #hancomAIacademy라는 텍스트(프로젝트 제목)을 집어넣은 명령어
git init
# "지금부터 이 폴더를 깃이 관리!"라고 선언하는 명령어. 폴더 내부에 .git폴더가 생기면서, 파일들 변경 사항 추적
git config --global user.email "you@example.com" #전역 설정
git config --global user.name "Your Name" #전역설정
# 내 컴퓨터에서 사용할 git의 전역 사용자 이름과 이메일을 등록하는 명령어
git config user.email "you@exmaple.com"
git config user.name "Your name"
# 현재 이 폴더(프로젝트)에서만 사용할 이름과 이메일을 따로 지정하는 명령어
git config user.email
git config user.name
# 현재 이 폴더(프로젝트)에 설정되어 있는 사용자 이름과 이메일 확인하는 명령어
git add README.md #임시 대기
#변경된 README.md파일을 Staging Area(장바구니/임시 대기 공간)에 올리는 명령어
git commit -m "first commit" #패키징
# 장바구니에 담은 파일들을 모아 하나의 '버전'으로 영구히 기록(패키징)하는 명령어
git branch -M main
# 현재 기본 브랜치(가지)의 이름ㅇ르 main으로 강제(-M) 변경하는 명령어
git remote add origin https://github.com/ramcd01/hancomAIacademy.git
# 내 컴퓨터에 있는 로컬 저장소와 인터넷 상의 GitHub저장소를 origin이라는 이름으로 등록해서 연결하는 명령어
git remote -v
# 현재 이 폴더(프로젝트)에 연결된 원격 저장소(GitHub 주소)의 목록을 확인 하는 명령어
git push -u origin main # 보내기
# 내 컴퓨터에서 만든 버전(main)을 인터넷(origin)으로 밀어 올려서 업로드하는 명령어
# -u 옵션은 "앞으로 git push 나 git pull만 쳐도 자동으로 origin의 main 브랜치랑 주고받도록 기억해 둬"라는 뜻
2. .gitignore파일
GitHub 같은 인터넷 공간에 올라가면 안되는 파일들을 .gitignore라는 파일로 저장해서 인터넷 공간에 올라가지 못하게 하는 파일
# 1. 환경 변수 및 설정 파일 (최우선 차단)
.env
.env.local
.env.*.local
config.json
secret.yaml
데이터베이스 비밀번호, 외부 API 외부 연동 키, 암호화용 솔트(Salt) 등 프로젝트의 모든 민감한 비밀값이 들어가는 파일들
# 2. 클라우드 및 API 인증 키 (.pem, .json 등)
*.pem
*.pkcs12
*.key
credentials.json
firebase-adminsdk.json
AWS 서버에 접속할 때 쓰는 비밀 열쇠(*.pem)나 구글/파이어베이스 서비스에 관리자 권한으로 접근할 수 있는 인증서 파일들
# 3. 운영체제 및 시스템 임시 파일 (사용자 경로 노출 방지)
.DS_Store
Thumbs.db
맥(macOS)이나 윈도우(Windows) 시스템이 폴더를 열 때 내부적으로 자동 생성하는 아이콘 미리보기용, 혹은 폴더 속성 저장용 임시 파일
# 4. 데이터베이스 및 로그 파일 (실제 데이터 유출 방지)
*.db
*.sqlite
*.log
logs/
개발하면서 내 컴퓨터에서 테스트용으로 만든 데이터베이스 파일(*.db, sqlite)이나, 프로그램이 실행되면서 남긴 기록 파일(.log)
*.log(파일 단위 차단): 파일 이름이 .log로 끝나는 파일 차단
logs/(폴더 단위 차단): 이름이 logs인 폴더와 그 안에 들어있는 하위 폴더, 파일 차단
서버에서 GitHub에 올라가있는 파일 불러오기
1. 환경
Virtual Box - 가상 서버
2. 서버에 Git 설치
sudo apt update
sudo apt install git -y # Git 프로그램 설치
git --version # Git 버전 확인
git config --global user.name "user"
git config --global user.email "user@example.com"
#이 서버에서 앞으로 내가 Git 버전을 기록(commit)할 때 사용할 전역 작성자 이름과 이메일 등록
cd ~
mkdir flask
cd flask
# 폴더 생성
git clone https://github.com/ramcd01/hancomAIacademy.git
# (github에서 주소 복사해오기)
# GitHub에 올라와 있는 소스코드를 그대로 복제 (clone)해서 내 서버 폴더로 다운로드
# 만약 공개범위를 private으로 했다면??
1. 로그인 및 비밀번호 가져오기
- 본인의 GitHub 계정 ID(예: ramcd01) 또는 가입할 때 사용한 이메일 주소를 입력합니다.
- 사이트 로그인용 비밀번호를 입력하면 인증에 실패합니다.
- 반드시 GitHub 웹사이트에서 발급받은 개인 토큰(Personal Access Token, PAT)을 복사해서 붙여넣어야 합니다.
- GitHub 웹사이트에 로그인합니다.
- 오른쪽 상단 프로필 이미지를 누르고 Settings를 클릭합니다.
- 왼쪽 맨 아래 메뉴에서 Developer Settings를 클릭합니다.
- Personal access tokens \(\rightarrow \) Tokens (classic)를 차례로 누릅니다.
- Generate new token (classic)을 클릭합니다.
- Note(이름)를 적고, 권한 설정(Scopes)에서 repo 체크박스에 체크합니다.
- 맨 아래로 내려가 Generate token을 누릅니다.
- 화면에 나타난 초록색 토큰 값을 즉시 복사합니다. (이 창을 닫으면 다시는 확인할 수 없으니 메모장에 저장해 두세요.)
- 터미널의 Password 창에 이 복사한 토큰 값을 붙여넣기(Ctrl+V 또는 마우스 우클릭)합니다.
——————————————————————————
본 후기는 [한글과컴퓨터x한국생산성본부x스나이퍼팩토리] 한컴 AI 아카데미 (B-log) 리뷰로 작성 되었습니다.
'학습일지' 카테고리의 다른 글
| [스나이퍼팩토리] 한컴AI아카데미(26.05.27) Docker (0) | 2026.05.27 |
|---|---|
| [스나이퍼팩토리] 한컴AI아카데미(26.05.22) GitHub (0) | 2026.05.23 |
| [스나이퍼팩토리] 한컴AI아카데미(26.05.18) (0) | 2026.05.18 |
| [스나이퍼팩토리] 한컴AI아카데미(26.05.15) (0) | 2026.05.15 |
| [스나이퍼팩토리] 한컴AI아카데미(26.05.14) (0) | 2026.05.15 |