Git & Github to CodingApple
코딩애플 강의를 통해 배운 Git사용법을 정리한 글입니다.
📅 작성일
2025년 1월 29일
📌 목차
- 소개
- part1-1 : git 설치법 (윈도우 / 맥북)
- part1-2 : git add, commit으로 파일 기록해놓을 수 있음
- part1-3 : git add, commit, diff 쉽게 하는 법 (VSCode)
- part1-4 : git의 branch 만들기
- part1-5 : 다양한 git merge 방법 (3-way, fast-forward, squash, rebase)
- part1-6 : 코드짜다가 실수했다 되돌아가자 (git revert, reset, restore)
- part1-7 : Github 사용법 1. 내 코드 올릴 땐 git push
- part1-8 : Github 사용법 2. 타인과 협업하기 (git clone, pull)
- part1-9 : Github 사용법 3. 브랜치로 협업하기 (pull request)
- part1-10 : git flow / trunk-based 브랜치 전략
- part1-11 : git stash로 코드 잠깐 보관하기
- 참고 자료
📝 소개
이전 회사를 다닐 때 SVN을 위주로 사용하다보니 Git, Github를 사용할 일이 많이 없어,
처음 사용해볼 때 막막함이 느껴져 강의를 통해 공부를 하게되었습니다.
🛠️ part1-1 git 설치법 (윈도우 / 맥북)
🔹 Git을 사용하는 이유
🔹 설치 방법
- Git 공식 사이트에서 다운로드
- 이미지에 맞게 수정 후 Next

🔹 초기 설정
git config --global user.email "skawotkd12@naver.com"
git config --global user.name "jsnam"
📂 part1-2 git add, commit으로 파일 기록해놓을 수 있음
🔹 기본 사용법
git init
git add 파일명
git add .
git commit -m '커밋 메시지'
🔹 Staging
- git add된 파일들이 있는 장소를 staging이라 한다
- git commit된 파일들이 있는 장소를 repository(저장소) 라고한다
🔹 유용한 명령어
git status
git log --all --oneline
🖥️ part1-3 git add, commit, diff 쉽게 하는 법 (VSCode)
🔹 VSCode를 통한 Git 관리
- 요즘은 에디터에 git기능이 내장되어있어 굳이 명령어를 사용 할 필요는 없다.
- Source Control 탭을 통해 직관적인 Git 작업 가능
- 변경사항 시각적 확인 용이
🔹 git diff
- 파일이 수정되었을 때 어떤내용이 수정되었는지를 보기 위한 명령어
- 터미널로 보기 때문에 가독성이 많이 떨어지고 버그도 많아서 사용은 잘 안한다.
git diff
- git diff대신하여 vim 에디터를 통해서 차이점을 볼 수 있음
- 사실 비교해주는 에디터들이 있기때문에 잘 사용하지 않는다
git difftool 커밋ID
git difftool 커밋ID1 커밋ID2
🌿 part1-4 git의 branch 만들기
🔹 branch
- 프로젝트의 복사본
- main과 브랜치가 충돌이 나는경우는 직접 비교하면서 수정을 해줘야한다



git branch 브랜치명
git switch 브랜치명
git merge 브랜치명
🔀 part1-5 다양한 git merge 방법 (3-way, fast-forward, squash, rebase)
🔹 Merge 방식
-
3-way merge
- 두 브랜치를 서로 merge할 때 사용하는 방식
- branch를 만든 시점으로 브랜치 둘다 수정이 됬을 경우 사용된다

-
Fast-forward merge
- 한쪽 브랜치만 변경된 경우 사용하는 방식
- branch를 merge하는것이아닌 main으로 이름을 바꾸어 쭉 이어나가는 방식

git merge --no-ff
-
Rebase
- 브랜치의 시작점을 다른 커밋으로 이동
- 메인 브랜치의 최근 커밋으로 옮긴 후 fast-forward를 사용하는것
- 브랜치가 많은경우 3-way merge는 나중애 git log출력할 때 복잡하기 때문에 rebase를 사용하여 깔끔하게 로그를 확인할 수 있다
- 단점은 conflict가 많이 나온다

-
Squash merge
- 브랜치에서 커밋했던거를 전부 합쳐서 메인에 붙이는 방식이다
- 깃 로그를 깔끔하게 보기위해 사용한다

🔹 브랜치 삭제
- 사실 branch를 merge해도 삭제되지는 않는다
git branch -d 브랜치명
git branch -D 브랜치명
⏮️ part1-6 코드짜다가 실수했다 되돌아가자 (git revert, reset, restore)
🔹 파일 복구 (restore)
git restore 파일명
git restore --source 커밋ID 파일명
git restore --staged 파일명
🔹 커밋 취소 (revert)
git revert 커밋ID
git revert HEAD
🔹 커밋 리셋 (reset)
git reset --hard 커밋ID
git reset --soft 커밋ID
git reset --mixed 커밋ID
🚀 part1-7 Github 사용법 1. 내 코드 올릴 땐 git push
🔹 git repostor
🔹 git push
git push -u 저장소주소 main
git push
🔹 git remote
git remote add origin 저장소주소
🔹 사용
git remote add origin 저장소주소
git push -u origin main
🔄 part1-8 Github 사용법 2. 타인과 협업하기 (git clone, pull)
🔹 git clone
- 원격 저장소에 있는 내용들을 가져온다
- 내가아닌 다른 사람이 push를 하려면 Settings / Collaborators에 추가를 해줘야한다
git clone 저장소주소
🔹 git pull
- 원격 저장소에 있는 내용들을 가져온다 (원격저장소 최신내용이 로컬저장소에 있을 때만 가능)
git pull origin main
🔹 실행
git clone 저장소주소
git pull origin main
🤝 part1-9 Github 사용법 3. 브랜치로 협업하기 (pull request)
🔹 원격저장소 브랜치
- 로컬에서 브랜치 생성 및 작업
- 브랜치 푸시
- Github에서 Pull Request 생성
- 코드 리뷰 후 merge
🌳 part1-10 git flow / trunk-based 브랜치 전략
🔹 Git Flow
- 안정적인 운영을 할 때 사용한다
- 최근 continuous delivery 이런거 한 때 유행이었는데 그런거 할 땐 적합하지 않을 수 있다
🔹 Git Flow 활용순서
- main브랜치와 dev브랜치(개발용)를 생성
- feature브랜치를 생성 (dev에 기능추가)
- feature브랜치에서 만든게 잘 되면 dev에 merge
- 배포를 하는 경우 dev의 release브랜치를 따로 생성 후 여러가지 테스트를 해본다
- 완성이 된다면 main과 dev에 merge시킨다
- 만약 배포 후 버그가 생긴다면 메인에서 hotfix를 하나 만들어 바로바로 수정을 한 뒤 main, dev에 머지시킨다

🔹 Trunk-based
- 코드를 한 브랜치에서만 관리하는 방식
- 기능을 추가하는 경우 main에서 브랜치를 하나 생성해서 수정 후 머지시키는 방식
- main 브랜치에 있는 코드가 뻑이나면 큰일나기 때문에 테스트나 코드리뷰를 자주해야한다

🔹 어떤걸 사용해야할까
- 뼈대가 잡혀있지 않고 개발진행중인건 GitFlow, 뼈대가 잡히고 유지보수를 하는건 Trunk-based
📦 part1-11 git stash로 코드 잠깐 보관하기
🔹 Stash
- 수정했던 코드들을 잠시 다른곳에 보관하고 싶을 때 사용한다
🔹 Stash 명령어
git stash
git stash save "메모"
git stash list
git stash pop
git stash drop stash@{n}
git stash clear
📚 참고 자료