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 : 병합 취소
- master의 변경사항을 수락
- 작업 브랜치(A)의 변경사항을 수락
- 직접 수동으로 수정 후 다시 커밋
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주차 끝!!

'백엔드 > 멋쟁이사자처럼' 카테고리의 다른 글
[충남대학교 멋쟁이사자처럼] 백엔트 트랙 2회 (0) | 2025.03.18 |
---|---|
[충남대학교 멋쟁이사자처럼] 백엔드 13기 합격 (0) | 2025.03.04 |
Lotto 코드 짜기 (1) | 2025.02.05 |