-
Notifications
You must be signed in to change notification settings - Fork 0
Open
Labels
documentationImprovements or additions to documentationImprovements or additions to documentation
Description
Name: TIL
About: Today I Learned
Title: "TIL - 2025-01-23(Thursday)"
Labels: [TIL]
Assignees: ''
TIL - 2025-01-23
오늘의 학습
Git 실습
1. Git 초기화 및 브랜치 생성
Git 저장소를 초기화하고 브랜치를 생성하는 기본 작업을 수행.
- Git 저장소 초기화:
기존.git디렉토리를 삭제한 후 새로운 저장소를 생성.rm -rf .git git init git branch -M main git add . git status
2. Merge와 Fast-Forward
- Fast-Forward 병합:
- Fast-Forward는 브랜치에 별다른 추가 작업이 없을 때 단순 병합을 수행하는 방식.
git merge 실행 후 이력이 한 줄로 유지된다.
git switch -c dev # 새로운 dev 브랜치 생성 및 이동
git add . && git commit -m "change"
git switch main # main 브랜치로 이동
git merge dev # Fast-Forward 병합
git branch -d dev # dev 브랜치 삭제
3. 3-Way Merge
- 3-Way Merge는 브랜치 간에 공통 조상(commit)을 기준으로 서로 다른 변경 사항을 병합.
이 방식은 Fast-Forward와 달리 병합 커밋이 생성된다.
git branch dev1
git branch dev2
git switch dev1
git add . && git commit -m "위를 수정"
git switch dev2
git add . && git commit -m "아래를 수정"
git merge dev1 # dev1과 dev2를 병합
4. Merge Conflict
- 충돌 상황: 두 브랜치에서 동일한 파일의 동일한 부분을 다르게 수정했을 때 발생합니다.
- 충돌 해결:
- 충돌 파일을 열고 수정 후 저장.
- 변경 사항을 Staging 영역에 추가한 뒤 커밋을 생성.
git branch feature1
git branch feature2
git switch feature1
git add . && git commit -m "공통부분 수정(f1)"
git switch feature2
git add . && git commit -m "공통부분 수정(f2)"
git merge feature1 # 충돌 발생
git add . # 수정된 충돌 파일 Staging
git commit # 충돌 해결 후 커밋
5. Git Reset과 Revert
- Reset
- Mixed: Staging 영역 초기화.
- Soft: Staging 유지, 커밋 내용만 초기화.
- Hard: 커밋과 파일 변경 사항 모두 제거.
git reset --soft HEAD~1 # 마지막 커밋을 취소하지만, 파일은 유지
git reset --mixed HEAD~1 # 마지막 커밋과 Staging 영역 취소
git reset --hard HEAD~1 # 마지막 커밋과 파일 변경 사항 모두 삭제
- Revert:
- 기존 커밋을 되돌리되, 새 커밋으로 기록.
git revert HEAD~1
git revert HEAD
6. Commit Amend
- 커밋 수정: 기존 커밋 메시지를 변경하거나, 새 파일을 추가하여 기존 커밋을 수정.
git commit --amend -m "수정된 메시지"
git commit --amend --no-edit --date "1 day ago"
7. Rebase
- Git에서 Rebase는 하나의 브랜치에 있는 커밋을 다른 브랜치 위로 재배치하는 작업을 의미한다. 이를 통해 브랜치의 커밋 이력을 깔끔하게 정리할 수 있다.
Rebase의 기본원리
Before Rebase:
main: A --- B --- C
feature: D --- E
After `git rebase main` on `feature`:
main: A --- B --- C
feature: D' --- E'
- D와 E는 재적용되어 D', E'라는 새 커밋이 생성.
- main과 feature의 커밋 이력이 한 줄로 깔끔히 연결된다.
느낀 점
참고 자료
- 수업자료: Git 실습
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
documentationImprovements or additions to documentationImprovements or additions to documentation