코딩/Git&GitHub

GIT & GitHub 기초

americanoallday 2025. 2. 17. 16:02

1. 필수 리눅스 명령어

  •  pwd : print working directory : 현재 나의 위치를 알려줌
    • ~ : home directory
    • / : 루트 디렉토리(폴더) 
    • home 
      • Desktop(바탕화면)
  • ls : list : 현재 폴더안에 있는 목록을 보여주는 명령어
  • ls -a : 숨긴 파일 까지 목록을 보여주는 명령어 
  • ls - l : 리스트의 세부 정보 포함 표시
  • cd : change directory : 경로 이동 시 
    • . : 지금 폴더
    • .. : 한 단계(상위) 폴더 
    • ~ : 홈 디렉토리로 이동(또는 cd + 엔터)
  • mkdir : make directory : 폴더 만들기
    • mkdir name : name이름의 디렉토리 생성
  • touch : 파일 만들기 
    • touch name.확장자명 (ex : touch index.html)
    • 파일의 날짜, 시간 변경 시 사용하기도 함

2. Git * Github 명령어

Git이란?

- 코드 변경점 기록하는 도구

- 버전 관리 도구 (형상configuration 관리 도구)

- 하나의 폴더 내에서 코드의 변경점을 기록하기 위해 git을 사용

- 에러 발생 시 과거의 코드 기록으로 쉽게 되돌아가기 가능

 

Github란?

코드를 온라인으로 백업해 두는 것

백업과 공유가 가능한 온라인 코드 저장소

 

[github repository 생성하기]

1. github 가입 및 로그인 하기

2. Create a new repository : public, 상업적으로 사용할 때 private설정

 

Git, Github 차이

💡 Git = 분산 버전 관리 시스템(DVCS, Distributed Version Control System)

Git은 로컬(내 PC)에서 실행되고, GitHub는 원격(클라우드)에서 코드 공유 및 협업을 위한 플랫폼

💡 GitHub = Git을 사용하여 코드를 저장, 공유, 협업할 수 있는 원격 저장소 서비스

 

 

Git 필수 명령어

  • git init : initialize 초기화하다. 
    • 프로젝트 시작 전 딱 한 번만 입력하면 됨
    • 여러 번 입력해도 문제되진 않음
    • 정확한 프로젝트 폴더(경로)에서 입력해야 함
    • git init 입력 시 해당 숨겨진 폴더가 생성 됨(.git 파일에서 형상관리를 함 > 코드 변경을 git에서 추적하기 시작하겠다.)

 

  • git status : 저장 되기 전 상황을 확인하는 명령어

  • git add & commit : 코드를 저장하는 명령어 
    • add > commit 순서 : add (저장할 파일 지정)
      • git add . : 모든 파일 선택 
    • commit -m "설명": git commit -m "파일 생성 및 삭제 코드 추가"
더보기
  • remote add 안하고 진행하면 로컬에만 저장됨.
  • git remote add origin <github address> : 깃허브 주소를 origin(출처)으로 저장하는 것
    • local : 개인 컴퓨터 저장소
    • remote : github 저장소
  • git remote -v : 현재 등록되어있는 깃 주소 리스트 출력
  • git branch -M main : Master 브랜치를 mian으로 이름 바꿈 
  • git push -u origin main : git push만 쓰고 싶을 때, 개인 프로젝트가 아닐 시 권장하지 않음(추후에 헷갈리거나 잘못 올림)
  • Error 1 : Please tell me who you are 

 

  • git log : 커밋 내역 확인 
    • log확인 후 Q버튼으로 나가기 가능
  • git reflog : 모든 깃 로그가 출력 됨
  • git reset commitID : commitID위치로 복구
  • git push : 현재까지 커밋된 것을 github에 업로드 하겠다.
    • git push origin 브랜치명 : 
    • git remote add origin <github address> : 깃허브 주소를 origin(출처)으로 저장하는 것
      • local : 개인 컴퓨터 저장소
      • remote : github 저장소
    • git remote -v : 현재 등록되어있는 깃 주소 리스트 출력
    • git branch -M main : Master 브랜치를 mian으로 이름 바꿈 
    • git push -u origin main : git push만 쓰고 싶을 때, 개인 프로젝트가 아닐 시 권장하지 않음(추후에 헷갈리거나 잘못 올림)
    • github > settings > access > coraboraters > add people
  • git clone : 코드 복사해오기
    • 복사할 HTTPS 복사 > 작업할 폴더 위치로 이동 후 > git clone 복사한HTTPS주소: 마침표 추가해야지 폴더 생성안하고 해당 위치에 파일을 복사해서 가져옴
  • git pull : 다른 사람이 변경한 코드 내 코드에도 가져오기 
    • vim 에디터가 뜬다면 ? : esc > : > wq > 엔터

 

  • 충돌(Conflict) 해결하기 : pull 했을 때 코드 충돌 시
    • 둘 중에 하나의 코드로 바꾸기

옛날 방식

 

  • git reset --hard : 이전 코드로 복구 :머지 중 사라짐. 
  • git stash : 현재 작업 중인 변경 사항을 임시 저장하고 이전 깨끗한 상태로 돌아갈 수 있도록 함
    • 다른 브랜치로 이동해야 하는데, 현재 작업 중인 변경 사항을 아직 커밋하고 싶지 않을 때
    • Git Pull을 해야 하는데 충돌을 방지하고 싶을 때
    • 잠시 변경 사항을 숨겨두고 다른 작업을 해야 할 때
  • git stash list : stash 목록 확인
예시 출력 : 
stash@{0}: WIP on main: e108411 팀소개 페이지 뼈대 html업로드
stash@{1}: WIP on main: 2b1d38b Fix button alignment

 

  • git stash pop : stash에 저장한 변경 사항을 다시 불러오면서, stash 목록에서 제거하는 명령어
    • git stash pop 실행하면?
    • 가장 최근(stash@{0}) stash의 변경 사항이 다시 적용됨.
    • 적용된 후, stash 목록에서 해당 stash가 삭제됨.
  • git stash apply : pop과 비슷하지만, stash를 제거하지 않고 유지
  • git stash drop stash@{0} : 특정 stash만 삭제
  • git stash clear : 모든 stash 삭제
  • git stash save "버튼 디자인 수정 전 상태 저장" : 이름을 붙여서 stash 저장
  • git branch : 브랜치 리스트 확인(로컬 검색)
  • git branch -r : 브랜치 리스트 확인(원격 브랜치 리스트 확인)
  • git branch -vv : 브랜치 연결 상태 확인
  • git branch 브랜치이름 : 브랜치 생성
  • 합쳐질 브랜치 이동 후 git merge 합칠 브랜치이름 :브랜치를 합치는 명령어

git switch vs git checkout 차이점

  • git switch 브랜치이름 : 브랜치 이동, 새 브랜치 생성, 브랜치 관련 작업 전용
    • git switch 브랜치이름 : 브랜치 이동
    • git switch -c 브랜치이름 : 만들면서 이동
  • git checkout : 브랜치 이동, 특정 커밋 이동, 파일 되돌리기, 브랜치 전환 + 특정 파일/커밋 체크아웃
    • git checkout 브랜치이름 : 브랜치 이동
    • git checkout -b 브랜치이름 : 브랜치 생성 및 이동
    • git checkout 커밋ID : 특정 커밋으로 이동
    • git checkout -- index.html : 특정 파일을 이전 상태로 복원

“브랜치 변경”만 필요하면 → git switch 사용!

특정 파일을 되돌리거나 커밋을 체크아웃해야 하면 → git checkout 사용!

 

🎯 git pull --rebase origin main vs git reset --hard 차이점 

✅ 1️⃣ git pull --rebase origin main

 

원격(origin/main)의 최신 변경 사항을 가져오면서, 내 로컬 변경 사항을 위에 쌓는 명령어

 

💡 어떻게 동작하나?

1. 원격(origin/main)에 있는 최신 커밋을 가져옴 (하지만 바로 병합하지 않음)

2. 내 로컬 커밋을 최신 커밋 위로 재배치(rebase)

즉, 내 변경 사항을 원격 커밋 뒤에 이어서 적용함 → “깔끔한 Git 히스토리” 유지

3. 충돌(conflict)이 발생하면 해결 후 진행해야 함

4. 완료 후 푸시 가능

 

📌 언제 사용하면 좋을까?

 

✅ 원격 브랜치(origin/main)가 업데이트되어 있지만, 내 로컬 변경 사항을 유지하면서 최신 상태로 만들고 싶을 때

병합(merge) 커밋을 만들지 않고 깔끔한 커밋 히스토리를 유지하고 싶을 때

 

✅ 2️⃣ git reset --hard

 

현재 로컬 브랜치를 특정 커밋 상태로 강제로 되돌리는 명령어 (모든 변경 사항 삭제)

 

💡 어떻게 동작하나?

HEAD를 특정 커밋으로 이동하면서, 변경 사항을 전부 삭제

--hard 옵션을 사용하면, 작업 중인 파일도 강제 삭제됨

실행하면 되돌릴 수 없으므로 주의 필요! 🚨

 

📌 언제 사용하면 좋을까?

 

✅ 작업 중인 변경 사항을 완전히 버리고 이전 상태로 되돌리고 싶을 때

✅ 깔끔한 상태에서 다시 시작하고 싶을 때

✅ 실수로 변경한 파일을 원래 커밋 상태로 복구하고 싶을 때