Git/[인강] Git & Github 실무 활용 완벽 가이드

[Git & Github] 11. Github의 기초

pakms980319 2025. 4. 30. 11:07
Critical

    ● 깃허브가 하는 일
    ● git clone
    ● 깃허브 등록 및 SSH 키 설정
    ● 깃허브 저장소 만들기
    ● 원격 작업
    ● git push

 

 

 

* Github 란?

깃 저장소를 위한 호스팅 플랫폼이다.

깃 허브에 등록한 저장소가 포트폴리오가 될 수 있다.

최신 정보를 얻기에도 매우 유용하다.

 

git clone <url>
로컬에 없는 저장소를 가져온다.
깃허브의 공개 저장소에 있는 것들은 모두 클론이 가능하다. 단, Push는 불가능하다.
그리고 거의 대부분의 경우에 깃허브가 쓰일 뿐이지 깃허브만 가능한것이 아니다. git clone 명령어도 github와 관계가 없다.

 


 

깃허브 등록 및 SSH 키 설정 (Windows 기준)

 

* 왜 SSH 키를 사용하는가?

✅ 1. 보안 강화

 ● SSH는 비밀번호 대신 공개키/비공개키 쌍을 사용해 안전하게 인증 가능하다.

 ● 비밀번호 저장이나 입력이 필요 없어, 노출 위험이 적다.

✅ 2. 비밀번호 없이 자동 로그인이 가능

 ● git push 할 때마다 사용자명/비밀번호를 입력할 필요가 없다.

 ● Github는 2021년 이후부터 HTTPS 방식에서 비밀번호 인증을 중단 → SSH 필수!

✅ 3. 여러 계정(개인/회사) 사용에 유리

 ● 계정별로 키를 다르게 생성해 ~/.ssh/config에서 구분 가능하다.

 

⚙️ SSH 키 등록 절차

 

1️⃣ Git 설치 확인

git --version

 

설치가 안 되어 있다면 👉 https://git-scm.com

 

Git

 

git-scm.com

 

2️⃣ SSH 키 생성

Git Bash 실행 후:

ssh-keygen -t ed25519 -C "your_email@example.com"
  • your_email@example.com : Github에 등록된 이메일 주소
  • 기본 저장 경로 : C:\Users\사용자이름\.ssh\id_ed25519
  • 패스프레이즈는 선택사항 (설정하면 보안 강화)

3️⃣ 공개 키 복사 및 GitHub에 등록

clip < ~/.ssh/id_ed25519.pub
또는
notepad ~/.ssh/id_ed25519.pub

 

🔗 GitHub 접속 → https://github.com/settings/ssh/new

 

GitHub · Build and ship software on a single, collaborative platform

Join the world's most widely adopted, AI-powered developer platform where millions of developers, businesses, and the largest open source community build software that advances humanity.

github.com

  • Title : 키 이름 (예 : My Laptop)
  • Key : 복사한 공개 키 붙여넣기

4️⃣ SSH 연결 테스트

ssh -T git@github.com

성공 시 :
Hi your_username! You've successfully authenticated...

 

 

 

🧾 ssh-agent 설정 (패스프레이즈 있을 경우에만)

키에 비밀번호(패스프레이즈)를 설정한 경우, 매번 입력하지 않으려면 ssh-agent 사용이 필요하다.

 

설정 방법

 

1. ssh-agent 시작

eval "$(ssh-agent -s)"

 

2. 키 등록

ssh-add ~/.ssh/id_ed25519

# 해당 경로가 인식이 안될때는 절대 경로로 작성하거나 해당 위치에 파일이 위치하는지 확인 필요

 

3. Windows에서 자동 실행 설정 (선택)

PowerShell (관리자 권한)에서:

Start-Service ssh-agent
Set-Service -Name ssh-agent -StartupType Automatic

 

 

ssh-agent는 꼭 필요한가?

SSH 키 상태 ssh-agent 필요 여부 설명
🔒 패스프레이즈 있음 필요 반복 입력을 피하려면 ssh-agent에 키 등록
🔓 패스프레이즈 없음 불필요 바로 인증 가능, ssh-agent 없어도 됨

 

 

 

 

🛠️ SSH config 설정 (선택이지만 매우 추천)

 

Git Bash에서 파일 열기:

notepad ~/.ssh/config

# 파일이 없을 시
touch ~/.ssh/config

 

🔹 기본 설정 예시

Host github.com
    HostName github.com
    User git
    IdentityFile ~/.ssh/id_ed25519
    IdentitiesOnly yes

 

🔸 여러 계정 사용하는 경우 예시

# 개인 계정
Host github-personal
    HostName github.com
    User git
    IdentityFile ~/.ssh/id_ed25519_personal
    IdentitiesOnly yes

# 회사 계정
Host github-work
    HostName github.com
    User git
    IdentityFile ~/.ssh/id_ed25519_work
    IdentitiesOnly yes

 

→ Repository 클론 시:

git clone git@github-personal:username/repo.git

 

 

 

 

🧹 사용하지 않는 SSH 키 정리 가이드

더 이상 사용하지 않는 SSH 키는 보안상 반드시 정리해주는 것이 좋다.

방치된 키는 유출 위험이 있고, 실수로 사용할 경우 혼란을 일으킬 수 있다.

 

정리 체크리스트

단계 설명
🔐 1. GitHub에서 키 삭제 👉 SSH 키 관리 페이지 접속 → 사용하지 않는 키 삭제
🧠 2. ssh-agent에서 키 제거 해당 키만 제거: ssh-add -d ~/.ssh/id_ed25519_old
모든 키 제거: ssh-add -D
🗂️ 3. 로컬 키 파일 삭제 Git Bash 또는 파일 탐색기에서 해당 키 파일 삭제:rm ~/.ssh/id_ed25519_oldrm ~/.ssh/id_ed25519_old.pub
⚙️ 4. SSH config 파일 정리 ~/.ssh/config에서 관련 항목 삭제 또는 주석 처리
# IdentityFile ~/.ssh/id_ed25519_old

 

📌 참고 명령어 모음

 

🔸 ssh-agent에 등록된 키 확인 (PowerShell)

ssh-add -l

 

🔸 ssh-agent에서 특정 키 제거 (PowerShell)

ssh-add -d ~/.ssh/id_ed25519_old

 

🔸 ssh-agent에서 모든 키 제거 (PowerShell)

ssh-add -D

 

🔸 SSH 키 파일 삭제 (Bash 기준)

rm ~/.ssh/id_ed25519_old
rm ~/.ssh/id_ed25519_old.pub

 

 

 

전체 요약

항목 설명
인증 방식 SSH (비밀번호 대신 키로 인증)
보안 공개키/비공개키 방식, 높은 보안성
패스프레이즈 선택 사항 (보안 강화)
ssh-agent 패스프레이즈 있을 때 필요
config 설정 계정 구분, 키 지정 시 필수
편의성 자동 로그인, 깔끔한 계정 관리 가능

 


 

* 로컬에 기존 저장소가 있는 경우

    1. 깃허브에서 새 저장소를 만든다.
    2. 로컬 저장소에서 원격을 만든다.
    3. 푸시한다.


* 아직 작업을 시작하지 않은 경우

    1. 깃허브에서 새 저장소를 만든다.
    2. 클론한다.
    3. 작업을 만든 후 푸시한다.



git remote
현재 저장소에 있는 원격 목록을 보여준다.
git remove -v : 저장소의 주소까지 출력해준다.


git remote add <remote> <url>
새로운 원격을 만들어준다. url은 깃허브의 저장소 주소이다.


일반적으로 원격 이름은 origin으로 만든다. 원격은 여러개 존재할 수 있다.

아래와 같은 명령어도 사용된다.
git remote rename <old-remote> <new-remote> : 원격 이름(old-remote)을 수정(new-remote)한다.
git remote remove <name> : 원격을 삭제한다.

<remote>는 깃에게 알려줄 url에 이름을 붙인것이다.
git push <remote> <branch>
깃에게 대상 저장소 및 푸시할 브랜치를 알려준다.
git push origin main은 정말 흔하게 사용하는 명령어이다.



(저장소를 만든 직후 아무것도 없는 상태)



원격 유무를 포함한 정보를 확인 후에 push를 실행하면 아무것도 없던 저장소에 파일들이 추가된다.
로컬에서 작업하던것을 깃허브에 올린것이기 때문에 로컬에서 작업했던 브랜치의 이력들이 모두 올라간다.
현재는 main 브랜치만 푸시했기 때문에 main 브랜치만 존재한다.


git push -u <remote> <local-branch>:<retmoe-branch>
기본적인 push는 로컬 브랜치가 원격 저장소에 존재하지 않으면 새로 생성하고 그 이후에는 같은 브랜치에 push되는 방식이다. 즉, 로컬 A브랜치를 원격 저장소의 A브랜치로 push하는 것이다.
여기서 로컬 브랜치와 원격 저장소의 브랜치를 다르게 설정할 수 있다. 로컬 A브랜치를 원격 저장소의 B브랜치로 push할 수 있다는 것이다.
일반적으로 자주 사용되는 명령어는 아니다.



git push -u <remote> <branch>
upstream의 약어이다. 로컬 브랜치를 원격 브랜치에 연결시킨다.



연결시키고 난 뒤에는 git push 명령어 만으로도 push가 가능해진다.
보통은 main 브랜치를 처음 push할 때 사용한다.

로컬 브랜치와 깃허브의 브랜치는 다르다는 것을 인지해야 한다.

 

깃허브는 로컬 저장소와 자동으로 동기화되지 않는다.

 


참고

1) https://www.udemy.com/course/best-git-github

2) https://erikanes.tistory.com/371

 

[Git & Github] 11. Github의 기초

Critical 깃허브가 하는 일 git clone 깃허브 등록 및 SSH키 설정 깃허브 저장소 만들기 원격 작업 git push * Github란? 깃 저장소를 위한 호스팅 플랫폼이다. 깃 허브에 등록한 저장소가 포트폴리오가 될

erikanes.tistory.com