[이상형 월드컵 프로젝트 사용 기술] Git 활용 협업

KangHo Lee's avatar
Dec 30, 2024
[이상형 월드컵 프로젝트 사용 기술] Git 활용 협업

1. 터미널 세팅

(1) Git 설치

  • 형상 관리 도구
  • 64-bit Git for Windows Setup

사용자 등록

notion image
notion image
  • git config —global user.name (유저이름 설정)
  • git config —global user.email(이메일 설정)
  • git config list (설정 확인)

(2) IntelliJ 터미널 세팅

File → Settings
notion image

(3) VScode 터미널 세팅

  • New Terminal
notion image
  • 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 // 저장 + 창 닫기
notion image

Rebase

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

devleekangho