1. 터미널 세팅
(1) Git 설치
- 형상 관리 도구
- 64-bit Git for Windows Setup
사용자 등록


- git config —global user.name (유저이름 설정)
- git config —global user.email(이메일 설정)
- git config list (설정 확인)
(2) IntelliJ 터미널 세팅
File → Settings

(3) VScode 터미널 세팅
- New Terminal

- Git Bash 선택
- Select Default Profile로 기본 터미널 실행 프로그램 설정이 가능합니다.
2. Remote, Commit, Rebase
기본 명령어
git init // 깃 시작
git add . // 모든 파일의 변경 사항 저장
clear // 터미널 텍스트 삭제
q // 로그 등 터미널에 노출되는 텍스트가 터미널의 크기를 넘어 설 경우 원래대로 돌아올 수 있습니다.
원격 저장소 설정
git remote add origin 리포지토리주소
git remote -v // 저장된 주소 확인
브랜치
git checkout master // master 브랜치로 이동
git checkout -b feat/lhs/login // feat/lhs/login 브랜치가 있을 경우 이동, 없을 경우 생성해서 이동
git branch // 로컬 저장소에 저장된 브랜치 목록 보기
git push origin 브랜치이름 // origin에 등록된 repository의 브랜치에 push
git pull origin master // origin에 등록된 repository의 master 브랜치에서 pull
커밋
git add . // 모든 파일의 변경 사항 저장
git commit -m "[test] 로그인 리포지토리 테스트 완료" // 커밋
git log // 커밋 로그 확인 가능
git reflog // rebase, merge 등 모든 기록 확인 가능
git reset --hard // 모든 수정 사항을 삭제하고 마지막 커밋 상태로 되돌립니다. 주의: 이 작업은 되돌릴 수 없습니다.
// 커밋 내용 상세하게 적는 방법
git commit -m "커밋 제목 (엔터)
(엔터)
작성할 상세 내용" (쌍따옴표 닫고 엔터)
가장 최근에 한 커밋 수정
1. git commit --amend
2. Insert 버튼을 눌러서 insert mode 진입
3. 커밋 메세지 수정
4. esc 버튼을 눌러서 insert mode 해제
5. :wq // 저장 + 창 닫기

Rebase
- 브랜치의 커밋 히스토리를 다른 베이스 브랜치의 최신 커밋들 위로 옮기는 작업을 의미합니다.
git checkout feature-branch
git rebase master
// 위 명령어는 feature-branch의 변경 사항을 main 브랜치의 최신 커밋들 위로 옮깁니다.
git add <충돌 해결 파일>
git rebase --continue // 리베이스 계속 진행
git add <충돌 해결 파일> // 충돌 해결
... // 반복
git rebase --abort // 진행 중이던 모든 rebase 상황을 rebase 전으로 되돌립니다.

충돌 해결 중 add를 해도 안될 때
- 캐시를 지우고 다시 추가
git rm --cached src/test/java/com/metacoding/projectwc/worldcup/WorldCupRepositoryTest.java git add src/test/java/com/metacoding/projectwc/worldcup/WorldCupRepositoryTest.java
3. 컨벤셔널 커밋(Conventional Commits)
- 컨벤셔널 커밋(Conventional Commits)은 깃(기트) 커밋 메시지를 일관되고 의미 있게 작성하기 위한 규칙입니다.
- 저희 팀 컨벤셔널 커밋입니다.
- 무조건 대괄호 열고 + 소문자 + 대괄호 닫고
- 대괄호 닫고 한 칸 띄우기
- [feat] : 새로운 기능 추가
- [fix] : 버그 수정
- [docs] : 문서 수정
- [style] : 코드 포맷팅, 세미콜론 누락, 코드 변경이 없는 경우
- [refactor] : 코드 리팩토링
- [test] : 테스트 코드 추가 및 수정
- [chore] : 빌드 업무 수정, 패키지 매니저 수정
- [comment] : 주석 추가 및 수정
- [remove] : 파일 및 폴더 삭제
- [rename] : 파일 및 폴더 이름 수정
4. Git Flow
- 작업 시작 전 원격 리포지토리에서 자신의 master 브랜치에 pull
git checkout master git pull origin master
- 작업 시작 시 새로운 브랜치 생성
git checkout -b feat/lhs/login
- 한 가지 작업 완료 시 커밋
git add .
git commit -m "[test] 로그인 리포지토리 테스트 완료"
- 모든 작업이 끝났을 때
- 마스터로 가서 원격 저장소에서 가져온다.
git checkout master git pull origin master
git checkout feat/lhs/login git rebase master
git push origin feat/lhs/login
- 다른 사람이 먼저 푸시해서 풀 리퀘스트가 되었을 때
- 다시 마스터로 가서 원격 저장소에서 가져온다.
git checkout master git pull origin master
git checkout feat/lhs/login git rebase master
--force
: 강제 푸시--force-with-lease
: 다른 사람이 수정하지 않았을 경우에만 강제 푸시
git push origin feat/lhs/login --force-with-lease
Share article