본문 바로가기
백엔드/멋쟁이사자처럼

[충남대학교 멋쟁이사자처럼] 백엔트 트랙 1회

by 발빠진 쥐 2025. 3. 11.

1주차 세션

[3/11(화) 충남대학교 공과대학 5호관 창의설계실 20:00-22:00]

 

 

 

 

 

Git Repository

 

로컬 저장소 = 실제 기록 공간, 개발자의 컴퓨터 위에 위치한 저장소

 

원격 저장소 = 인터넷이나 네트워크 상 다른 위치에 위치한 저장소 (ex : github)

 

 

git add, git commit, git push 를 거쳐 저장소가 옮겨짐

Working Directory -> Staging Area -> Repository -----> Remote ( Repository )

 

 

git add : 파일을 stage 에 올린다.

ex) git add .

 

+ Working Directory의 파일 상태

 

 

git commit : 의미있는 변경 작업들을 저장소에 기록하는 동작

-> 시간에 따라서 변화하는 내용만 관리하고 코드가 

시간의 순서에 따라 커밋들이 하나씩 찍힘

 

git push : 로컬 저장소에서 원격 저장소로 푸시

 

 

 

git reset git pull

 

 

 

 

 

 

 

git 기본 용어 정리

  • Working Directory : 작업 중인 실제 파일 공간
  • head : 현재 가리키고 있는 커밋 (브랜치의 가장 마지막 커밋)
  • snapshot : 특정 시점의 프로젝트 상태
  • branch : 작업 흐름의 분기점. 협업에 필수
  • Merge : 두 브랜치를 하나로 합치는 것
  • git reset : 커밋을 되돌리되, 히스토리 자체를 수정함
  • git revert : 커밋을 취소하는 새 커밋을 만들어 기록
  • cherry-pick : 다른 브랜치의 특정 커밋만 선택해서 적용
  • conflict : 병합 중 충돌이 발생한 상황
  • git stash : 작업 중인 변경사항을 임시 저장

 

 

 

 

branch

branch : 한 개발자가 자신의 WorkDirectory 에서 Repository로 옮기는 혼자서만 하는 과정을 협업하기 쉬운 구조로 만들어줌 협업을 위해선 꼭 필요함. 타임라인에서의 분기점, Merge를 위한 도구,  Master branch는 중심이 되는 branch

 

branch 생성 : git branch 브랜치 이름

branch 이동 : git switch(check out) 브랜치 이름

 

각각 브랜치마다 Head 가 하나씩 다 존재하기 때문에 Head의 위치를 파악하는게 중요함

 

 

 

 

 

 

Merge (병합)

git merge [대상 브랜치] : 대상 브랜치를 현재 브랜치로 병합하여 합친다.

 

병합과 충돌

Git의 병합 방법 

 

1. Fast - forward 

작업한 브랜치를 원본 브랜치에 병합할 때, 작업한 브랜치의 시작 commit을 원본 브랜치 이후의 commit 으로 가리키도록 하는 것. (별로 안일어남)

 

2. 3-way 병합

 

Conflict (충돌)

git merge로 충돌 발생 시, 응답으로 충돌이 어디서 발생했는지 알려준다.

자동 병합 commit 을 생성하지 않고, 충돌 메시지를 출력하며 병합작업을 중단한다.

 

 

 

 

 

충돌 (Conflict) 해결

git merge --abort : 병합 취소

 

  1. master의 변경사항을 수락
  2. 작업 브랜치(A)의 변경사항을 수락
  3. 직접 수동으로 수정 후 다시 커밋

 

 

 

 

 

git rebase와 rebase를 하는 이유

 

리베이스는 커밋 히스토리를 깔끔하게 정리할 때 유용한 도구

 

git rebase 브랜치명 : 현재 브랜치의 커밋을 다른 브랜치 기준으로 다시 적용

 

결과적으로 커밋 로그가 한 줄로 깔끔하게 정리돼서 보기 좋게 해줌

단, 이미 원격에 push한 커밋에 rebase를 적용하면 충돌 위험이 있으니 주의

 

 

 

 

 

git reset 과 git revert

명령어설명
git reset 특정 커밋 이전으로 되돌림. 이력 자체를 지움
git revert 특정 커밋을 취소한 새로운 커밋을 생성

reset은 과거로 되돌아가는 느낌이고, revert는 "이전 커밋을 없애는 행동을 새로 기록"하는 느낌.

 

 

 

cherry-pick

  • git cherry-pick 커밋ID : 원하는 커밋 하나만 골라서 현재 브랜치에 적용
  • 전체 브랜치가 아닌, 특정 작업만 가져오고 싶을 때 사용.

 

 

Conflict 해결 다양한 방법

  • 충돌 파일을 직접 수정 후, git add → git commit
  • git merge --abort 로 병합 취소
  • SourceTree, VSCode 등의 툴을 이용하면 GUI로 쉽게 해결 가능

 

git stash

작업 중 급하게 다른 작업을 해야 할 때, 현재 변경사항을 임시로 저장해두는 기능!

  • git stash : 변경사항 임시저장
  • git stash apply : 임시저장 꺼내오기
  • git stash drop : 꺼낸 뒤 삭제

 

 

commit convention

 

commit 을 도장 쾅쾅찍기라고 생각할때 

일관된 형식의 메시지 작성이 필요 (안쓰면 혼날 수도 있음)

 

기본적인 커밋 메시지 구조

 

제목 (Type : Subject)

(한줄 띄어 분리)

본문 (Body)

(한줄 띄어 분리)

꼬리말 (Footer)

 

Tag Name 과 Description

 

 

 

 

 

 

 

 

**추가로 알아 볼 것 (내용 추가 완료)

Working Directory 에서의 파일 상태 관리는?

git reset/revert 란? **

cherry-pick 이란? **

conflict 해결의 다양한 방법

git stash

git rebase와 rebase를 하는 이유 **

리베이스는 기본적으로 커밋들을 모아서 복사한 뒤, 다른 곳에 떨궈 놓는 것입니다.

리베이스를 하면 커밋들의 흐름을 보기 좋게 한 줄로 만들 수 있다는 장점이 있습니다. 리베이스를 쓰면 저장소의 커밋 로그와 이력이 한결 깨끗해집니다.

 

 

 

 

 

 

실습 & 과제

해당 사이트에서 주어지는 과제를 전부 클리어 한 뒤 스크린 샷 제출

제출형식은 "이름_git 과제"

 

 

https://learngitbranching.js.org/?locale=ko

 

Learn Git Branching

An interactive Git visualization tool to educate and challenge!

learngitbranching.js.org

 

 

 

1주차 끝!!